代码很基本
share_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Uri image = Uri.parse("android.resource://com.mypac.app/" +
imageToSend);
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
share.putExtra(Intent.EXTRA_STREAM, image);
startActivity(Intent.createChooser(share, "Share with"));
}
});
变量imageToSend
是int
- / drawables目录中图像的ID。
在共享对话框中,我可以看到Messaging as选项。我选择它但没有附加图像。有一条消息“无法附加图像”。如果我手动添加SD卡中的图像,那么它就会被附加到MMS消息上而没有任何问题。
上面的代码可能有什么问题?
编辑
尝试了另一种解决方案:从SD附加图像。这是代码。
File file = new File(Environment.getExternalStorageDirectory(),
"img.png");
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
startActivity(Intent.createChooser(share, "Share with"));
这不起作用。我仍然收到无法附加文件的消息。 Facebook应用程序再次完美无瑕。
答案 0 :(得分:4)
意图转移到外部应用程序。
android:资源方案仅在本地有效。
这意味着您必须将资源中的图像复制到外部目录并在Intent中链接此新文件
答案 1 :(得分:2)
如何使用Intent类中的FLAG_GRANT_READ_URI_PERMISSION
标志:http://developer.android.com/reference/android/content/Intent.html#FLAG_GRANT_READ_URI_PERMISSION
顾名思义,这应该将给定Uri的读取权限转移到该意图启动的活动。
答案 2 :(得分:0)
你的Uri.parse()会返回什么? Null也许?
试试这个:
Resources resources = context.getResources();
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
resources.getResourcePackageName(imageToSend) + '/' +
resources.getResourceTypeName(imageToSend) + '/' +
resources.getResourceEntryName(imageToSend) );