2011-01-20 2 views
3

J'utilise l'API public de la classe DownloadManager, je suis capable de télécharger des fichiers vers la carte SD, ce qu'on appelle le stockage externe. Cependant, quand j'ai essayé de télécharger un fichier à d'autres endroits, comme/partition de cache, il jette une exception de sécurité qui dit "La destination doit être sur le stockage externe".DownloadManager: télécharger un fichier pour mettre en cache la partition

Est-ce que quelqu'un sait comment contourner cette limitation et écrire le fichier téléchargé dans la partition/cache?

Merci beaucoup.

Répondre

1

En fait, j'ai trouvé un moyen de télécharger des fichiers dans la partition/cache. Dans la classe DownloadManager, il existe une API setDestinationUri(), appelez cette fonction avec le paramètre "null", l'android téléchargerait les fichiers dans la partition/cache. De plus, si le paramètre n'est pas nul, l'uri doit commencer par "/ mnt/sdcard/..." sinon une exception serait levée.

+4

Ne pas utiliser/mnt/sdcard - appelez Environment.getExternalStorageDirectory() à la place./mnt/sdcard n'est pas garanti. –

+2

Il n'a pas dit qu'il utilise "/ mnt/sdcard". – tasomaniac

+0

Cette solution ne fonctionne pas. – madawa

3

Si vous développez une application du système, il y a une fonction cachée sur DownloadManager.Request nommée setDestinationToSystemCache()

Il a besoin de ces autorisations:

android.permission.ACCESS_DOWNLOAD_MANAGER 
android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED" 
android.permission.ACCESS_CACHE_FILESYSTEM 
Questions connexes