使用Intent显示本地资源.ACTION_VIEW失败



我想显示一个包含在apk中的文件。我可以把缩略图放到一个小的ImageView中,当用户点击它时,我想用Gallery(或用户拥有的任何图像查看应用程序)显示完整尺寸

下面是clicklistener:我想从"raw"文件夹中拉出完整的大小并开始和活动。我得到一个失败

private OnClickListener showImage = new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.setData(Uri.parse("android.resource://com.invodo.allshareplay/" + R.raw.dropbox_photo1));
        intent.setType("image/jpeg");
        startActivity(intent);
    }
};

——logcat ----

03-13 11:16:33.704: E/AndroidRuntime(10466): FATAL EXCEPTION: main
03-13 11:16:33.704: E/AndroidRuntime(10466): android.content.ActivityNotFoundException:     No Activity found to handle Intent { act=android.intent.action.VIEW   dat=android.resource://com.invodo.allshareplay/2130968576 }
03-13 11:16:33.704: E/AndroidRuntime(10466):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)

我尝试了几种不同的方法来获取Uri路径,包括使用文件名作为

  intent.setData(Uri.parse("android.resource://com.invodo.allshareplay/raw/dropbox_photo1.jpg"));

在模拟器上,它告诉启动ViewImage,但然后说相机已经停止,除非我拿出这一行:

intent.setType("image/jpeg");

和注释掉它只是失败,没有找到任何活动

如果我把这段代码放在一个真实的设备上,它会在手机上显示我的图像,但不是我想要显示的图像。如果我取消SetType调用,它就会停止。

不管我在得到一个正确的Uri时做错了什么,关于如何正确显示作为原始资源存储的jpeg图像的任何想法?

这似乎是一个类似的问题,在这个问题中描述的流程。

建议的解决方案是添加"file://"作为文件绝对路径的前缀。所以Intent应该按照如下方式设置:

Uri hacked_uri = Uri.parse("file://" + uri.getPath());
intent.setDataAndType(hacked_uri, "image/*");
... 

最新更新