我正在尝试查看我在Android应用中使用ACTION_VIEW下载的JPG文件。我可以验证文件是否存在以及文件大小是否正确。我可以从模拟器中提取文件并在我的计算机上打开它,所以我知道JPG没有损坏。我还尝试了View image in ACTION_VIEW intent?中的代码。
我的代码如下:
// start intent to view the file
String filename = "test.jpg"
String downloadsDirectoryPath = getFilesDir().getPath() + "/downloads";
File file = new File(downloadsDirectoryPath + "/" + filename);
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(file), "image/*");
startActivity(i);
这似乎应该是直截了当的,但每当我运行上面的代码时,我都会
ERROR/UriImage(336): got exception decoding bitmap
ERROR/UriImage(336): java.lang.NullPointerException
ERROR/UriImage(336): at com.android.camera.Util.makeInputStream(Util.java:336)
ERROR/UriImage(336): at com.android.camera.Util.makeBitmap(Util.java:307)
ERROR/UriImage(336): at com.android.camera.Util.makeBitmap(Util.java:299)
ERROR/UriImage(336): at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:94)
ERROR/UriImage(336): at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:86)
ERROR/UriImage(336): at com.android.camera.gallery.UriImage.thumbBitmap(UriImage.java:120)
ERROR/UriImage(336): at com.android.camera.ImageGetter$ImageGetterRunnable.executeRequest(ImageGetter.java:173)
ERROR/UriImage(336): at com.android.camera.ImageGetter$ImageGetterRunnable.run(ImageGetter.java:149)
ERROR/UriImage(336): at java.lang.Thread.run(Thread.java:1096)
关于这里发生了什么的任何想法?
答案 0 :(得分:0)
据我所知,通过查看平台源代码,您将在URI中传入一个不存在的文件路径。
downloadsDirectoryPath的价值是什么?打赌你15个代表点,它不是完全合格的......
答案 1 :(得分:0)
根据Scott的建议,使用openFileOutput(“test.jpg”,MODE_WORLD_READABLE)代替FileOutputStream()可以解决问题。
更好的解决方案(取决于应用程序)可能使用以下方法之一:
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal