Android 6.0 – fichiers de stockage externes en cours de suppression lors de la désinstallation de l'application

Mon application utilise le DownloadManager pour télécharger des fichiers dans un sous-répertoire du dossier Musique de l'appareil.

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)); 

J'ai remarqué que les fichiers sont supprimés lorsque l'application est désinstallée à partir d'un périphérique exécutant Marshmallow (cela ne se produit pas sur les anciennes versions du système d'exploitation). Avez-vous des idées à ce sujet?

  • Quelle est la différence entre ACTION_CANCEL et ACTION_UP dans MotionEvent?
  • Pinterest comme GridView personnalisé
  • Capture d'événement clé pour backspace
  • Transfert de données sur le son dans Android
  • Comment rendre Scroll de Listview plus lent?
  • Android: activation et services
  • Merci

  • Enregistrer le fichier dans la mémoire interne de stockage Android
  • Visual Studio 2015 n'installe pas Android SDK pour Xamarin
  • Mettez à droite l'indicateur d'un ExpandableListView dans Android
  • Erreur: Impossible d'exécuter dex
  • Android ImageView ajustant la hauteur du parent et l'épaisseur du raccord
  • Est-ce que toute fonction est similaire à celle de R.java dans Android?
  • One Solution collect form web for “Android 6.0 – fichiers de stockage externes en cours de suppression lors de la désinstallation de l'application”

    Cela se fait par une classe interne appelée DownloadReceiver et définie dans le manifeste du package 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> 

    Ici, l'action android.intent.action.UID_REMOVED attire l'attention. Il a été introduit dans Lollipop déclenchant un appel à handleUidRemoved() performant

     resolver.delete(ALL_DOWNLOADS_CONTENT_URI, Constants.UID + "=" + uid, null); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.