与 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());
相关文档在 Sharing 部分而不是 Messenger 部分
https://developers.facebook.com/docs/sharing/android
在我看到我的案例中的所有内容都已弃用后,我只需要共享 2 张图像,因此 intent 方法无需 Facebook SDK 即可工作。
"String pack" 为信使包名称,可以是两者之一:
信使:com.facebook.orca
精简版信使: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();
}
}
我已经将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());
相关文档在 Sharing 部分而不是 Messenger 部分 https://developers.facebook.com/docs/sharing/android
在我看到我的案例中的所有内容都已弃用后,我只需要共享 2 张图像,因此 intent 方法无需 Facebook SDK 即可工作。
"String pack" 为信使包名称,可以是两者之一:
信使:com.facebook.orca
精简版信使: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();
}
}