我想显示一个包含在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/*");
...