在分享意图中使用 Facebook SDK 的 ShareContent android

Use Facebook sdk's ShareContent in share intent android

我正在尝试在我的应用程序中使用 shareintent,但我 运行 在将 link 分享到 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!"));
    }
}

调试上面的代码后发现activitylist只有一个元素。那么我该如何解决这个问题呢?

您需要添加发送意图正在处理的 Mime 数据类型以获得返回的适当活动:

share.setType("text/plain");

只需尝试 SharePhotoContent 而不是 ShareLinkContent。 如果您想使用 ShareLinkContent,请确保 property.ImagePath 指向真实的 http 图像 link。如果 link 包含在默认 android 浏览器应用程序中工作的 https 检查。