我正在使用downloadmanager.request enqueue setDestinationUri
来下载文件。
是否可以将文件下载到设备的内部存储位置以使其持久化?
我正在使用Android 3.1 Xoom设备,虽然该应用程序允许我们写入/mnt/sdcard位置,但它实际上并没有一个功能性的SD卡。
是否有方法将下载的文件存储到内部存储器中?
TIA
我正在使用downloadmanager.request enqueue setDestinationUri
来下载文件。
是否可以将文件下载到设备的内部存储位置以使其持久化?
我正在使用Android 3.1 Xoom设备,虽然该应用程序允许我们写入/mnt/sdcard位置,但它实际上并没有一个功能性的SD卡。
是否有方法将下载的文件存储到内部存储器中?
TIA
很可能DownloadManager
无法做到这一点。我的假设是DownloadManager
不在您的进程中运行,而是在由系统控制的另一个进程中运行。内部存储位置受权限保护,您提供的任何位置都只能由您的应用程序访问。
看起来您有两个选择。
(1) 在“外部”存储上提供文件路径,在下载完成后将其复制到内部存储,并删除外部存储上的文件。
(2) 创建一个ContentProvider
,DownloadManager
可以写入其中,并为其提供与此ContentProvider
相对应的URI
。您实现的ContentProvider
可以将文件写入内部存储,因为它将在您的应用程序上下文中运行。
FileProvider
,那么DownloadManager
将会崩溃,并且抛出异常java.lang.IllegalArgumentException:Not a file URI:content://your_file_provider_authotrity/file_path
。因为DownloadManager
使用file://
方案访问文件,而FileProvider
则会给您一个具有content://
方案的URI。 - Kalpesh Patel