为什么此代码不将图像附加到MMS消息?

时间:2011-08-24 12:35:52

标签: android android-intent mms

代码很基本

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"));
            }
        });

变量imageToSendint - / 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应用程序再次完美无瑕。

3 个答案:

答案 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) );