与Facebook Messenger分享

时间:2015-07-01 12:42:07

标签: android facebook-sdk-4.0

我已将Facebook SDK的依赖关系更新为4.1.0。他们改变了很多,现在我找不到与Messenger共享文本和图像的方法。

在更新我使用的sdk之前:

FacebookDialog.MessageDialogBuilder builder = new FacebookDialog.MessageDialogBuilder(this)
            .setName(linkName)
            .setDescription(description)
            .setLink(webLink)
            .setPicture(pictureLink);

    FacebookDialog dialog = builder.build();
    dialog.present();

现在看起来我只能分享图像。

String mimeType = "image/jpeg";
ShareToMessengerParams shareToMessengerParams =
        ShareToMessengerParams.newBuilder(contentUri, mimeType)
                .build();
MessengerUtils.shareToMessenger(
       this,
       REQUEST_CODE_SHARE_TO_MESSENGER,
       shareToMessengerParams);

有人可以解释一下与4.1.0之前分享文本和图像的等效方法吗?

2 个答案:

答案 0 :(得分:8)

我发现有一种类似的方式在Facebook上分享,也适用于Messenger。

这是代码

ShareLinkContent.Builder shareLinkContentBuilder = new ShareLinkContent.Builder()
            .setContentTitle(contentTitle)
            .setContentDescription(contentDescription)
            .setContentUrl(Uri.parse(url));
    shareLinkContentBuilder.setImageUrl(Uri.parse(imageUrl));
    MessageDialog messageDialog = new MessageDialog(activity);
    messageDialog.registerCallback(callbackManager, callback);
    messageDialog.show(shareLinkContentBuilder.build());

相关文档位于共享部分,而不是 Messenger 部分 https://developers.facebook.com/docs/sharing/android

答案 1 :(得分:0)

在我看到所有情况都已弃用之后,我只需要共享2张图像,因此intent方法无需Facebook SDK就可以使用。

“字符串包”是Messenger包名称,可以是以下两者之一:

信使:com.facebook.orca

Messenger Lite:com.facebook.mlite

public void shareToOtherAppByPackage(Context context, String pack, Bitmap bitmap1,Bitmap bitmap2) {
    try {

        ByteArrayOutputStream bytes1 = new ByteArrayOutputStream();
        bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, bytes1);
        String path1 = MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap1, "front", null);
        Uri imageUri1 = Uri.parse(path1);

        ByteArrayOutputStream bytes2 = new ByteArrayOutputStream();
        bitmap2.compress(Bitmap.CompressFormat.JPEG, 100, bytes2);
        String path2 = MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap2, "back", null);
        Uri imageUri2 = Uri.parse(path2);

        //PackageManager pm = context.getPackageManager();
        //PackageInfo info = pm.getPackageInfo(pack, PackageManager.GET_META_DATA);


        ArrayList<Uri> imageUris = new ArrayList<Uri>();
        imageUris.add(imageUri1); // Add your image URIs here
        imageUris.add(imageUri2);


        Intent shareIntent  = new Intent(Intent.ACTION_SEND);
        shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
        shareIntent.setType("image/*");
        shareIntent.setPackage(pack);
        shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);

        //waIntent.putExtra(Intent.EXTRA_TEXT, pack); // adds text to share
        context.startActivity(Intent.createChooser(shareIntent , context.getString(R.string.share_with)));
    }
    catch (Exception e) {
        Toast.makeText(context, context.getString(R.string.app_share_not_installed), Toast.LENGTH_SHORT).show();
    }
}