[問題] 如何下載網路圖片到內存

作者: gcobc12632 (Ted)   2016-01-13 17:37:04
我是一名自學ANDROID的新手
我原本是用 DownloadManager 來下載網路圖片
然後在儲存在SD卡內:
DownloadManager download =
(DownloadManager)getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse("圖片網址"));
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath, "圖片名稱");
Uri uri = Uri.parse("file://" + file);
request.setDestinationUri(uri);
download.enqueue(request);
結果後來我發現,並不是每隻手機都有SD卡
如果是在沒有SD卡的手機上執行就會無法下載圖片,甚至閃退
最好的辦法就是將圖片存到內存裡…
每支手機都會有內存的吧
我知道內存的路徑是:getApplicationContext().getFilesDir().getPath()
但是我直接套用上面程式碼的 filePath,卻會閃退
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.io.File.getPath()' on a null object reference
因為完全沒碰過這塊所以毫無頭緒…
那該如何改寫呢?
或是有其他寫法可供參考嗎?
作者: lonelytea (霸氣逼人)   2016-01-13 21:13:00
getpath這東西是空的意思他沒抓到任何東西 所以會出錯
作者: y3k (激流を制するは静水)   2016-01-13 21:58:00
你要去判斷各種會拿回null或exception的狀況
作者: kiwatami (悠游自在)   2016-01-14 08:44:00
我記得沒有SD卡他就會存在內部儲存空間阿
作者: A4P8T6X9 (殘廢的名偵探)   2016-01-14 13:20:00
Environment.getExternalStorageDirectory().getAbsolutePath() ?
作者: ssccg (23)   2016-01-14 13:38:00
DownloadManager只能存在external storage,API說明有寫吧另外external storage ≠ SD卡最好的作法是如果沒有external storage,就不要設DownloadManager會存在cache,再用DownloadManager的的getUriForDownloadedFile之類的方法取來用
作者: changyuheng (張昱珩)   2016-01-15 10:36:00
確實有可能有的裝置缺少 external storage,因為什麼事都有可能。不過那是 CTS 測項之一,我覺得不需要幫沒過 CTS 的裝置設想。

Links booklink

Contact Us: admin [ a t ] ucptt.com