2

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

下面是 clicklistener :我想从“原始”文件夹中提取完整大小并启动​​和活动。我失败了

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

    }

};

--- 日志猫 ----

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

4

1 回答 1

0

这似乎与此问题中描述的流程类似。

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

...

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

它对我有用...

于 2015-02-19T09:05:00.413 回答