Android DownloadManager 保存到下载文件夹

标签 android android-file android-download-manager

我正在使用 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/

相关文章:

java - Playstore Android 预启动测试致命异常 : ControllerMessenger

java - Android 工具栏中的内容编辑

java - 无法访问其他 Activity 类中的静态变量

java - 如何将文件存储在我的 Android 模拟设备上,然后从我的程序中访问它?

android - 在哪里写入文本文件以及如何为 SD 卡设置它

android - Android Pie 上的 DownloadManager 请求延迟

android - 如何在不干扰子选项卡的情况下使用 TabActivity 菜单

java - 如何判断文件是否已打开以在 Android 中进行读/写?

android - 如果 Activity/应用程序被销毁,则接收 Intent

android - 在android中以字节[]下载数据