2017-02-09 1 views
0

Dans mon application, il y a un bouton qui va supprimer toutes les photos du téléphone avant qu'il ne soit vendu, donc personne ne peut voir les photos dans le téléphone.Supprimer toutes les photos de l'appareil Android

ce code derrière ce bouton est ce

 List<Long> mediaStoreIds = new ArrayList<Long>(); 

     Cursor c = getApplicationContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{BaseColumns._ID}, null, null, null); 

     if (c != null) { 
      final int id = c.getColumnIndexOrThrow(BaseColumns._ID); 

      c.moveToFirst(); 
      while (!c.isAfterLast()) { 
       Long mediaStoreId = c.getLong(id); 

       mediaStoreIds.add(mediaStoreId); 
       getApplicationContext().getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, BaseColumns._ID + "=?", new String[]{Long.toString(mediaStoreId)}); 

       c.moveToNext(); 
      } 
      c.close(); 
     } 


    } 

le problème est que lorsque débogueur atteindre cette ligne, il arrête

Cursor c = getApplicationContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{BaseColumns._ID}, null, null, null); 

ne sais pas pourquoi il arrête et comment y remédier

Quelqu'un peut-il m'aider ici?

Merci

+1

Je pense que cela nécessite une autorisation. Les avez-vous déclarés dans votre manifeste et votre code? – 0xDEADC0DE

+1

ajouter à la bonne réponse ci-dessous par Dmitry, en supprimant une photo afin qu'elle n'apparaisse pas dans un navigateur de fichiers, et en fait purger les données de manière irrécupérable via un logiciel comme "Recuva" sont deux choses différentes. [Plus d'info ici] (http://www.howtogeek.com/125521/htg-explains-why-deleted-files-can-be-recovered-and-how-you-can-prevent-it/) – Doomsknight

Répondre

1

Pas nécessairement répondre à la question, mais un couple de bits de conseils:

  • Suppression de photos de MediaStore de l'appareil ne supprime pas toutes les traces. Plus précisément, de nombreux périphériques maintiennent un cache de vignettes contenant des miniatures de toutes les photos, même celles supprimées. Ces vignettes ont souvent une résolution suffisante pour voir les visages et le texte. Le cache des miniatures doit être supprimé séparément et son emplacement varie selon les modèles de périphériques. La manière correcte d'effacer des données à partir d'un appareil Android consiste à effectuer une réinitialisation d'usine, une fonction que tous les appareils offrent. Et même alors, la réinitialisation d'usine sur certains appareils n'effectue pas une effacement complet de la mémoire interne, ce qui signifie que les photos peuvent toujours être récupérables si l'appareil est enraciné.