我正在使用DownloadManager下载文件,我想将下载放在标准下载文件夹中,以便人们可以使用文件管理器在最明显的位置轻松找到它们:
Uri downloadLocation = Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS, filename));
request.setDestinationUri(downloadLocation);
Long reference = downloadManager.enqueue(request);
但我得到一个例外,因为那不是外部驱动器。
是否无法将文件下载到用户的下载文件夹?
另外,如果他们没有外部记忆,只是内部记忆怎么办?
感谢。
答案 0 :(得分:9)
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()
。
另外,如果他们没有外部记忆,只是内部记忆怎么办?
几乎所有Android设备都有外部存储器。外部!=可移动。 Android SDK所称的“外部存储”是用户可以通过USB线访问的内容,通常与板载闪存中的“内部存储”位于同一分区上。