繁体   English   中英

与 Facebook Messenger 分享

[英]Share with Facebook Messenger

我已将 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 之前相同的文本和图像共享方式吗?

我发现在 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());

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

在我看到所有内容都被弃用后,我只需要共享 2 张图像,因此 Intent 方法无需 Facebook SDK 即可工作。

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

信使: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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM