2011-01-25 53 views
2

我正在嘗試查看我在Android應用程序中使用ACTION_VIEW下載的JPG文件。我可以驗證文件是否存在,並且它是正確的大小。我可以從模擬器中拉出文件並在計算機上打開它,所以我知道JPG並未損壞。我也嘗試了View image in ACTION_VIEW intent?中的代碼。我可以使用ACTION_VIEW查看我已下載的JPG嗎?

我的代碼如下:

// 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

你加android.permission.INTERNET對你的AndroidManifest.xml – 2011-01-25 08:35:06

+0

感謝您的評論。是的,我在清單中有這個。我實際上可以驗證該文件是否存在於仿真器中。我弄清楚我的問題與權限有關,而不是與jpg文件相關。請參閱我對其他答案的回答以獲得解釋。 – 2011-01-25 19:01:16

回答

0

就我所看到的平臺源代碼而言,您可能會在URI中傳遞一個不存在的文件路徑。

downloadsDirectoryPath的值是什麼?打賭你15點代表它不完全合格...

0

斯科特在評論中回答了他自己的問題,但我會重新發布作爲答案,因爲它也證明對我有幫助:檢查圖像上的文件權限。我也拉了.jpg來驗證它是否正常,但真正的問題是FileOutputStream()默認設置了權限,因此ACTION_VIEW無法訪問該文件。 (我個人認爲這是一個瀏覽器中的缺陷,它代碼段錯誤,而不是記錄缺少讀取文件的權限,但我離題了......)

按照Scott的建議,使用openFileOutput(「test.jpg 「,MODE_WORLD_READABLE)而不是FileOutputStream()修復了這個問題。

更好的解決方案(取決於應用程序)可能是使用其中的一個:

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

相關問題