在ACTION_VIEW意图中查看图像?

Mar*_*ark 12 android

我想在图像查看器意图中显示我从下一个下载的png或jpg,但无法使其工作.

Bitmap bmp = getImageBitmap(jpg);
String path = getFilesDir().getAbsolutePath() + "/test.png"; 
File file = new File(path); 
FileOutputStream fos = new FileOutputStream(file);
bmp.compress( CompressFormat.PNG, 100, fos ); 
fos.close(); 

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "image/png");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我知道位图已下载好了(使用相同的例程为我的应用程序中的其他地方提供我的ImageView实例) - 我认为它写入文件确定,我可以在磁盘上看到它并且文件大小正确.意图启动但抛出异常:

ERROR/ImageManager(1345):异常解码位图java.lang.NullPointerException

然后新活动就在那里,空白.这是如何运作的?

Dav*_*ass 25

查看Android问题2092,它听起来与您所描述的相似.该问题指出,"Bitmap.compress()对于索引颜色模式(而不是RGB颜色模式)中保存的PNG文件失败",但第一位评论者认为,"它看起来不是索引颜色问题而是PNG问题. "

看起来您的代码很好,将其与此Android代码段进行比较:

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File("/sdcard/test.mp4");  
intent.setDataAndType(Uri.fromFile(file), "video/*");  
startActivity(intent);   

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File("/sdcard/test.mp3");  
intent.setDataAndType(Uri.fromFile(file), "audio/*");  
startActivity(intent); 
Run Code Online (Sandbox Code Playgroud)

  • @andrewww很棒的问题,我想你应该问这个问题.我不确定,但我相信这里有人会知道.但他们永远不会在这篇评论中看到它. (3认同)