Android 6.0 – archivos de almacenamiento externos que se eliminan al desinstalar la aplicación
Mi aplicación utiliza el DownloadManager para descargar archivos en un subdirectorio de la carpeta de música del dispositivo.
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); ... File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) + "/MyStuff/song.mp3"); request.setDestinationUri(Uri.fromFile(file));
He notado que los archivos se están eliminando cuando la aplicación se desinstala de un dispositivo que ejecuta Marshmallow (esto no ocurre en las versiones más antiguas del sistema operativo). ¿Tienes alguna idea sobre esto?
- Android: Cannnot guardar datos downladed desde el servidor utilizando DownloadManager a la memoria interna
- Android DownloadManager: ¿Cómo puedo obtener los encabezados de respuesta?
- DownloadManager no se almacena Archivos descargados en la carpeta de descarga
- Android Download Manager
- Establecer extras para BroadcastReceiver de DownloadManager
Gracias
- Hasta que el administrador de descargas de android le dé el estado de una descarga por referencia de descarga?
- Android: runtime-error 'No se puede crear el directorio', en el uso de la clase DownloadManager, method setDestinationInExternalPublicDir
- Cómo descargar varios archivos con android DownloadManager para que aparezca en una cola
- Android - DownloadManager / BroadcastReceiver llamado varias veces
- El gestor de descargas no funciona en dispositivos LG
Esto se hace mediante una clase interna llamada DownloadReceiver y definida en el manifiesto del paquete com.android.providers.downloads
<receiver android:name=".DownloadReceiver" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.intent.action.UID_REMOVED" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <data android:scheme="file" /> </intent-filter> </receiver>
Aquí la acción android.intent.action.UID_REMOVED
llama la atención. Se introdujo en Lollipop activando una llamada a handleUidRemoved()
realizando
resolver.delete(ALL_DOWNLOADS_CONTENT_URI, Constants.UID + "=" + uid, null);