我使用下载管理器将文件下载到手机存储上的新文件夹中。这是我使用的代码:
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)
令人讨厌的是它在某些设备上工作正常但在其他设备上根本没有。有谁知道为什么会这样?
答案 0 :(得分:0)
setDestinationInExternalPublicDir(String dirType,String subPath)的文档说dirType只能使用指定的值。
这里dirType只能是android定义的目录,例如:
Environment.DIRECTORY_DOWNLOADS
等
找到dirType的所有可能值因此使用此方法的正确方法是:
setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, subPath)
另请注意,这将使手机存储中的“下载”文件夹中的文件夹成为可能。下载管理器不允许您在手机存储的默认目录中创建文件夹。
这不会给你创建目录的IllegalStateException。