我是Java编程的新手,但我必须为Facebook Messenger Expression Apps实现以下共享,我现在的问题是我不知道如何从我的drawable中获取图像。怎么可能呢?
此代码在点击按钮时触发。图像在我的drawable上,名为img.png
public void CompartirWhatsApp(View view) {
FacebookSdk.sdkInitialize(getApplicationContext());
String mimeType = "image/png";
String route = "drawable://" + R.drawable.img;;
File file = new File(route);
Uri contentUri = Uri.fromFile(file);
// contentUri points to the content being shared to Messenger
ShareToMessengerParams shareToMessengerParams =
ShareToMessengerParams.newBuilder(contentUri, mimeType)
.build();
// Sharing from an Activity
MessengerUtils.shareToMessenger(
this,
SHARE_TO_MESSENGER_REQUEST_CODE,
shareToMessengerParams);
}
答案 0 :(得分:0)
您需要更改Uri
。 R.drawable.img
是资源ID。
示例:
Uri uri = Uri.parse("android.resource://your.package.here/drawable/img");
更改" your.package.here"使用您的应用程序的包名称。
修改强>
我没有FacebookSdk的经验。但是,Google快速搜索会显示与您的问题相关的代码段和问题。例如,this代码段调用的setMetaData。例如:
ShareToMessengerParams shareToMessengerParams = ShareToMessengerParams.newBuilder(uri,"image/jpeg").setMetaData("{ \"image\" : \"img\" }").build();
更多相关链接:
答案 1 :(得分:0)
您可以按名称确定URI,如下所示:
Uri uri = Uri.parse("android.resource://<package name>/drawable/image_name");
...确保将您的包裹名称放在上面的行中。
您也可以使用资源名称而不是字符串名称。
答案 2 :(得分:0)
根据定义,您无法直接共享资源中的文件,因为它们属于您的私有应用文件。如果插入媒体数据库或复制到外部存储或外部缓存中的某个位置,则只能共享它们。对于大多数部件,您需要获得为其写入存储的权限。您可以保存到外部文件缓存目录,但这也需要在kitkat下面的api权限。 Sop基本上你可以从你的资源中检索位图对象,但是你需要使用可以通过共享应用程序访问的Uri来访问它。 你也可以尝试授予uri权限,提供你使用直接uri而不是基于文件的uri。因为如果它基于文件,则存在访问问题。