Uri du contenu://media/externe/le fichier n'existe pas pour certains appareils

J'ai un problème avec certains appareils. Je ne peux pas le reproduire sur n'importe quel appareil mais je n'ai pas beaucoup de rapports d'incidents signalés par certains utilisateurs.

C'est cette exception:

java.lang.IllegalArgumentException: Unknown URL content://media/external/file
    at android.content.ContentResolver.delete(ContentResolver.java:1024)

J'utilise ceci:

contexte.getContentResolver().supprimer(MediaStore.Les fichiers.getContentUri("externe"),
MediaStore.Les fichiers.FileColumns.DONNÉES + "=?", new String[] { path });

Après que j'appelle MediaScannerConnection.scanFile() sur le fichier du répertoire parent, car il est à mon humble avis la plus fonctionnelle façon de comment informer MediaScanner à propos de la suppression de fichier et comment l'actualisation de la MTP de contenu. J'ai essayé tous les autres moyens que j'ai trouvé ici sur stackoverflow (par exempleAndroid Comment utiliser MediaScannerConnection scanFile) mais rien ne fonctionne comme cela.

Btw. Je l'utilise seulement pour les Api 11 et les plus récents. De stockage externe est certainement monté.

J'ai ces questions:
1. Savez-vous quelle en est la raison de cette exception se produit ? Je ne veux pas ignorer l'exception. Et je ne veux pas supprimer ce code lorsqu'il fonctionne très bien pour la plupart des appareils.
2. Savez-vous quelque nouvelle méthode fiable comment informer MediaScanner et comment actualiser immédiatement le contenu de MTP quand un fichier est supprimé ?

C'est assez étrange, surtout depuis à peu près la même appel est la partie de testMediaScanner dans la CTS. Savez-vous quels types d'appareils sont s'écraser? Est-il limité à un fabricant/modèle/système d'exploitation?
stackoverflow.com/questions/21417211/...

OriginalL'auteur Bhiefer | 2014-01-28