Es gibt diese Ausnahme:
Code: Select all
java.lang.IllegalArgumentException: Unknown URL content://media/external/file
at android.content.ContentResolver.delete(ContentResolver.java:1024)
context.getContentResolver().delete(MediaStore.Files.getContentUri("external"),
MediaStore.Files.FileColumns.DATA + "=?", neuer String[] { Pfad });
Danach rufe ich MediaScannerConnection.scanFile() für das übergeordnete Verzeichnis der Datei auf, da dies meiner Meinung nach die funktionalste Möglichkeit ist, MediaScanner über das Löschen einer Datei zu benachrichtigen und MTP-Inhalte zu aktualisieren. Ich habe alle anderen Möglichkeiten ausprobiert, die ich hier auf Stackoverflow gefunden habe (z. B. Android So verwenden Sie MediaScannerConnection scanFile), aber nichts funktioniert so gut wie diese.
Übrigens. Ich verwende es nur für APIs 11 und neuer. Der externe Speicher ist auf jeden Fall gemountet.
Ich habe diese Fragen:
1. Kennen Sie einen Grund, warum diese Ausnahme auftritt? Ich möchte die Ausnahme nicht einfach ignorieren. Und ich möchte diesen Code nicht entfernen, wenn er auf den meisten Geräten recht gut funktioniert.
2. Kennen Sie eine neue zuverlässige Methode, wie Sie MediaScanner benachrichtigen und den MTP-Inhalt sofort aktualisieren können, wenn eine Datei gelöscht wird?
 Mobile version
 Mobile version