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

时间:2013-03-13 17:29:04

标签: android

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

下面是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图像的任何想法?

1 个答案:

答案 0 :(得分:0)

这似乎与this question中描述的流程类似。

建议的解决方案是添加“file://”作为文件绝对路径的前缀。因此Intent应设置如下:

...

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

它对我有用......