【发布时间】:2016-04-25 17:10:01
【问题描述】:
有人问过一些类似的问题,但我的有点不同,我有以下代码可以在我的应用程序上进行下载:
DownloadManager.Request request = new DownloadManager.Request(uri)
.setTitle(fileInfo.getFileName())
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,
getString(R.string.app_name) + File.separator + fileInfo.getFileName());
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
}
manager.enqueue(request);
这工作正常,至少在三星 S4、Nexus 4、Nexus 7 上没有抱怨,但是我最近发现在某些设备上它无法创建目录并出现错误:
所以现在我正在检查目录并创建它是否不存在
File downloadDir = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
+ File.separator + getString(R.string.app_name));
if (!downloadDir.exists()){
boolean mkdir = downloadDir.mkdir();
}
我的问题是,为什么 DownloadManager 的行为不同,这是 Android 版本还是供应商问题以及预期的行为是什么,因为 getExternalStoragePublicDirectory 的文档指出它可能会抛出 IllegalStateException: IllegalStateException If the external storage directory cannot be found or created.
我认为它应该尝试创建目录,在这种情况下,我应该没有理由或不需要使用 mkdir 函数,但事实并非如此
【问题讨论】:
-
你能粘贴日志吗
-
@RahulPatil 我可以,但这更像是一个预期的行为问题,如果我像我在问题上所说的那样自己创建 µECS 目录,则错误 irs
Failed to create target file /storage/emulated/0/Download/µECS/AU3110005_AU3110006_Celulas não linfoides.pdf at com.android.providers.downloads.Helpers.getFullPath(Helpers.java:204)它已修复,我只想知道我是否应该这样做或者不是我无法理解的文档
标签: android android-download-manager