代码之家  ›  专栏  ›  技术社区  ›  Shafayat Mamun

在共享意向android中使用Facebook sdk的ShareContent

  •  7
  • Shafayat Mamun  · 技术社区  · 8 年前

    我正在尝试在我的应用程序中使用共享意图,但在共享到facebook的链接时遇到了问题,预览中没有显示任何图像。因此,尝试定制android共享意图,以便在选择facebook时使用facebooksdk的共享功能,但我似乎无法使其工作。下面是我尝试自定义共享意图的代码,

    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只包含一个元素。那么我该如何解决这个问题呢?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Ryan Ford    8 年前

    您需要添加发送意图正在处理的Mime数据类型,以获取返回的相应活动:

    share.setType("text/plain");
    
        2
  •  0
  •   Shadwork    8 年前

    试试看 SharePhotoContent 而不是ShareLinkContent。 如果要使用ShareLinkContent,请确保该属性。ImagePath指向真正的http图像链接。如果链接包含https,则在默认的android浏览器应用程序中进行检查。