DownloadManager: загрузить файл в раздел кеша

Я использую общедоступный API класса DownloadManager, я могу загружать файлы на SD-карту, так называемое внешнее хранилище. Однако, когда я пытался загрузить файл в другие места, например в раздел /cache, выдается исключение безопасности, в котором говорится: «Назначение должно быть на внешнем хранилище».

Кто-нибудь знает, как обойти это ограничение и записать загруженный файл в раздел /cache?

Большое спасибо.


person Jimmy    schedule 20.01.2011    source источник


Ответы (2)


Если вы разрабатываете системное приложение, в DownloadManager.Request есть скрытая функция с именем setDestinationToSystemCache().

Для этого требуются следующие разрешения:

android.permission.ACCESS_DOWNLOAD_MANAGER
android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED"
android.permission.ACCESS_CACHE_FILESYSTEM
person Brian R    schedule 29.05.2015
comment
android.permission.ACCESS_CACHE_FILESYSTEM предоставляется только системным приложениям. - person oo92; 12.10.2018

На самом деле я нашел способ загрузить файлы в раздел /cache. В классе DownloadManager есть api setDestinationUri(), вызовите эту функцию с параметром «null», андроид загрузит файлы в раздел /cache. Более того, если параметр не нулевой, uri должен начинаться с «/mnt/sdcard/…», иначе будет выдано исключение.

person Jimmy    schedule 21.01.2011
comment
Не используйте /mnt/sdcard — вместо этого вызовите Environment.getExternalStorageDirectory(). /mnt/sdcard не гарантируется. - person James Moore; 31.07.2011
comment
Он не сказал, что использует /mnt/sdcard. - person tasomaniac; 23.05.2013