我已将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之前分享文本和图像的等效方法吗?
答案 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();
}
}