繁体   English   中英

使用DownloadManager下载到手机存储上的新文件夹

[英]Using DownloadManager to download into new folder on phones storage

我使用下载管理器将文件下载到手机存储上的新文件夹中。 这是我使用的代码:

DownloadManager.Request downloadSample = new DownloadManager.Request(Uri.parse(urlSample));
downloadSample.allowScanningByMediaScanner();
downloadSample.setDestinationInExternalPublicDir("/Samples/"+previewName, "sample.ttf");
downloadSample.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);    

DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(downloadSample);

这在我测试过的许多设备上运行得非常好,但是有些设备强制关闭应用程序并在日志中出现以下错误:

E/AndroidRuntime(29918): java.lang.IllegalStateException: Unable to create directory: /storage/sdcard0/Samples/Helvetica
E/AndroidRuntime(29918): at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:507)

令人讨厌的是它在某些设备上工作正常但在其他设备上根本没有。 有谁知道为什么会这样?

setDestinationInExternalPublicDir(String dirType,String subPath)的文档说dirType只能采用指定的值。

这里dirType只能是android定义的目录,例如:

Environment.DIRECTORY_DOWNLOADS 

等等

你可以在http://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory(java.lang.String)找到dirType的所有可能值。

所以使用这种方法的正确方法是:

setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, subPath)

另请注意,这将使手机存储中的下载文件夹中的文件夹。 下载管理器不允许您在手机存储的默认目录中创建文件夹。

这不会给你创建目录的IllegalStateException。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM