我正在开发一个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?
提前致谢.
我试图在我的应用程序中使用shareintent但是在分享到facebook的链接时遇到了问题,预览中没有显示图像.所以尝试自定义android shareintent,以便在选择facebook时使用facebooksdk的共享功能,但我似乎无法让它工作.下面是我尝试自定义shareintent的代码,
Intent share = new Intent(android.content.Intent.ACTION_SEND);
PackageManager pm = getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(share, 0);
for (final ResolveInfo app : activityList) {
if (app.activityInfo.packageName.toLowerCase().startsWith("com.facebook.katana")) {
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentTitle(property.PropertyName)
.setImageUrl(Uri.parse(property.ImagePath))
.setContentUrl(Uri.parse(property.PropertyPermaLink))
.build();
ShareDialog shareDialog = new ShareDialog(this);
shareDialog.canShow(content);
break;
} else {
share.setType("text/plain");
share.addFlags(share.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
share.putExtra(Intent.EXTRA_SUBJECT, "");
share.putExtra(Intent.EXTRA_TEXT, property.PropertyPermaLink);
startActivity(Intent.createChooser(share, "Share property!"));
}
}
Run Code Online (Sandbox Code Playgroud)
调试上面的代码后,我发现activitylist只包含一个元素.那么我该如何解决这个问题呢?