ContentResolver
Verwendung von Medien, Dateien zu löschen, ist falsch und viele Probleme für den Benutzer bereitstellt.
Sie können keine Datei auf dem sd-card
einfach durch das Löschen ihrer Daten aus dem ContentResolver
auf Android-Versionen größer als Jelly Bean(4.3)
löschen.
Es funktioniert nur auf Android-Versionen vor KitKat(4.4)
.
Deshalb Android-Team zur Verfügung gestellt DocumentProvider.
Warum contentResolver.delete(...)
falsch ist?
1. auffüllt des sd-card
Wenn Sie versuchen, eine Mediendatei auf den sd-card
durch die ContentResolver
auf Android-Versionen löschen größer als 4,3, ist die tatsächliche Mediendatei wird unberührt bleiben, da der contentResolver.delete(...)
Ansatz nur die Informationen entfernt (Name, Datum, Pfad ...) der Medien und Sie werden am Ende nicht registrierte Mediendateien auf Ihrem sd-card
haben, die ContentResolver
keine Ahnung mehr über ihre Existenz hat und deshalb konnten Sie sie in Ihrer Galerie nicht sehen und Sie denken, dass sie ' Sie wurden mit dieser Methode gelöscht, während sie noch da sind, und füllen die sd-card
jedes Mal, wenn der Benutzer versucht, eine Mediendatei unter sd-card
zu löschen.
2. Media-Dateien (Bilder, Videos, Gifs ...) wird in die Galerie zurück
Es gibt viele Anwendungen gibt, vor allem Galerie und Dateimanager diejenigen, die diese nicht registrierte Mediendateien finden und füge sie an die ContentResolver
wieder als ihr normales Verhalten, während der Benutzer davon ausgeht, dass seine unerwünschten Mediendateien weg sind. Sicher kein Benutzer will seine/ihre angenommen gelöschten Bilder oder Videos zeigen sich mitten in einer Demonstration.
Also, was ist der richtige Ansatz, um Mediendateien auf dem sd-card
zu entfernen?
Nun, dies wurde bereits here mit der Verwendung von DocumentProvider
beantwortet.
Welchen Fehler erhalten Sie? Fügen Sie Ihre Logcat-Details hinzu. – huk
Wenn Sie auf einem Gerät mit Android M oder höher testen, benötigen Sie eine Laufzeitberechtigung. –
Ich teste auf einem Gerät mit Android M – Secret