我正在开发一个Android应用程序,我很想知道如何使用Android的共享意图从应用程序内更新应用程序用户的状态.
通过浏览Facebook的SDK看起来这很容易做到,但是我很想让用户通过常规的Share Intent弹出窗口来完成它吗?看到这里:

我尝试过通常的共享意图代码,但这似乎不适用于Facebook.
public void invokeShare(Activity activity, String quote, String credit) {
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, activity.getString(R.string.share_subject));
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Example text");
activity.startActivity(Intent.createChooser(shareIntent, activity.getString(R.string.share_title)));
}
Run Code Online (Sandbox Code Playgroud)
更新:进行了更多的挖掘,看起来这是Facebook的应用程序的一个错误尚未解决!(facebook bug)对于平均时间,看起来我只能忍受负面的"分享不起作用!!!" 评论.干杯Facebook:*(
由于Facebook不允许通过Intent共享文本,除非我们使用Facebook sdk,我正在寻找实现这一目标的方法.
我可以想到我可以使用的3个黑客:
1)由于Facebook允许图像共享,我可以生成一个Bitmap共享文本,并使用它共享图像Intent.
2)Facebook允许共享URL,在分享时它也会显示Head页面.我可以在我的服务器上托管一个专用页面,并将值作为参数传递给url,并生成Head使用它.(我没有使用php的经验,但我想这是可能的)
3)将文本复制到剪贴板并通知用户.
要么
使用所有3的组合.
任何人都可以建议我更好的方式在Facebook上分享我的内容,而不使用Facebook sdk?
提前致谢.
现在我可以使用共享意图打开共享对话框
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, link);
startActivity(Intent.createChooser(intent, "Share with"));
Run Code Online (Sandbox Code Playgroud)
但我需要对话框不要出现并直接分享到一个社交网络(例如FB或Twitter)
任何建议如何做到这一点?
只想分享动态文本字符串+应用程序的URL.原生的Android共享意图设置正确,并且与Twitter,Gmail等完美配合.但是,正如许多人猜测的那样,它不适用于Facebook.显然因为Facebook不接受该intent.EXTRA_TEXT领域的文字,只有一个网址.
好吧,我对你们的问题是:有没有办法根据他们选择分享的方法来分支共享意图?例如,如果他们通过Gmail或Twitter共享,请使用现有的String + URL(所需选项)EXTRA_TEXT,但如果他们选择通过Facebook共享,则只使用URL作为EXTRA_TEXT.
并不是真的想要实现Facebook Android SDK来完成Android内置的简单任务.
感谢您的时间和建议.
试过这样的事情,但它显然失败了,因为它只检查共享选项是否存在(当共享弹出时,而不是在他们点击共享方法之后),它在选择方法时没有响应.
String shareBody = "app string text " + act_txt + " more text! Get the app at http://www.appurl.com";
PackageManager pm = view.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0);
for(final ResolveInfo app : activityList) {
Log.i(TAG, "app.actinfo.name: " + app.activityInfo.name);
//if((app.activityInfo.name).contains("facebook")) {
if("com.facebook.katana.ShareLinkActivity".equals(app.activityInfo.name)) {
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://www.appurl.com");
startActivity(Intent.createChooser(sharingIntent, "Share idea"));
break;
} else {
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "app name");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share"));
break;
}
}
Run Code Online (Sandbox Code Playgroud) 现在我想与下面的链接共享文本是我的代码
String myText = "Hey!\nThis is a my Text!";
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
String extraText = "www.mylink.com\n\n" + myText ;
share.putExtra(Intent.EXTRA_TEXT, extraText);
startActivity(Intent.createChooser(share, "Share with Friends"));
Run Code Online (Sandbox Code Playgroud)
所以它与gmail,twitter等工作正常,但它不适用于Facebook
在Facebook上它只分享链接但没有显示我的文字
我想要这种类型的分享
www.mylink.com
here is my text
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,在此先感谢.