[问题] 如何下载网络图片到内存

楼主: 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