【发布时间】:2011-06-12 17:09:02
【问题描述】:
我正在使用类 DownloadManager 的公共 api,我可以将文件下载到 sdcard,即所谓的外部存储。但是,当我尝试将文件下载到其他地方(例如 /cache 分区)时,它会引发安全异常,提示“目标必须在外部存储上”。
有谁知道如何绕过这个限制并将下载的文件写入 /cache 分区?
非常感谢。
【问题讨论】:
我正在使用类 DownloadManager 的公共 api,我可以将文件下载到 sdcard,即所谓的外部存储。但是,当我尝试将文件下载到其他地方(例如 /cache 分区)时,它会引发安全异常,提示“目标必须在外部存储上”。
有谁知道如何绕过这个限制并将下载的文件写入 /cache 分区?
非常感谢。
【问题讨论】:
实际上我找到了一种将文件下载到 /cache 分区的方法。 在DownloadManager类中,有一个api setDestinationUri(),用参数“null”调用这个函数,android会下载文件到/cache分区。此外,如果参数不为null,则uri必须以“/mnt/sdcard/...”开头,否则会抛出异常。
【讨论】:
如果您正在开发系统应用程序,DownloadManager.Request 上有一个名为 setDestinationToSystemCache() 的隐藏函数
它需要这些权限:
android.permission.ACCESS_DOWNLOAD_MANAGER
android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED"
android.permission.ACCESS_CACHE_FILESYSTEM
【讨论】:
android.permission.ACCESS_CACHE_FILESYSTEM 仅授予系统应用程序。