我正在使用 DownloadManager 下载文件,我想将下载文件放在标准下载文件夹中,以便人们可以使用文件管理器在最明显的地方轻松找到它们:
Uri downloadLocation = Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS, filename));
request.setDestinationUri(downloadLocation);
Long reference = downloadManager.enqueue(request);
但我得到一个异常,因为它不是外部驱动器。
有没有办法将文件下载到用户的下载文件夹?
此外,如果他们没有外部存储器,只有内部存储器怎么办?
谢谢。
最佳答案
Uri downloadLocation=Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS, filename));
这不是您使用 Environment.DIRECTORY_DOWNLOADS
的方式。该常量用于 getExternalStoragePublicDirectory()
:
File dir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
dir.mkdirs();
Uri downloadLocation=Uri.fromFile(new File(dir, filename);;
注意目录可能还不存在,所以你应该自己调用mkdirs()
。
Also, what if they don't have external memory, just internal?
几乎所有的 Android 设备都有外部存储器。外部 != 可移动。 Android SDK 所说的“外部存储”是指用户可以通过 USB 数据线访问的内容,通常与“内部存储”位于同一分区,在板载闪存中。
关于Android DownloadManager 保存到下载文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21921121/