Android DownloadManager保存到下载文件夹

3
我正在使用DownloadManager下载文件,我想将下载内容放在标准下载文件夹中,这样人们就可以通过文件管理器在最显眼的位置找到它们:
Uri downloadLocation = Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS, filename));
request.setDestinationUri(downloadLocation);
Long reference = downloadManager.enqueue(request);

但是我收到一个异常,因为那不是外部驱动器。

有没有办法将文件下载到用户的下载文件夹中?

另外,如果他们没有外部存储器,只有内部存储器怎么办?

谢谢。

1个回答

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电缆访问的内容,并且通常位于与 "内部存储" 相同的分区中,在机身闪存中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接