Beobachten von Änderungen in Android Content Observer für Audio.Media.EXTERNAL_CONTENT_URI
Ich entwickle eine Android-App, in der ich Änderungen an der Android-SD-Karte für Audiodateien mit dem Dateinamen, dem Dateipfad und der darauf ausgeführten Operation erkennen muss. Beispiel: Wenn ich eine Datei auf meiner SD-Karte hinzufüge, möchte ich es wissen
Name der hinzugefügten DateiPfad der DateiOperation - HinzufügenZuvor habe ich versucht, Datei-Beobachter, aber dafür muss ich es auf jedes Verzeichnis anwenden. Also suchte ich nach einer anderen Lösung und bekam die Info überAudio.Media.EXTERNAL_CONTENT_URI. Dann habe ich so einen Content Observer erstellt
UriObserver.java - das ist ein Inhaltsbeobachter
class UriObserver extends ContentObserver {
public UriObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
Log.d("INSTANT", "GETTING CHANGES");
}
}
Dies ist der Code für die Registrierung
UriObserver observer = new UriObserver(new Handler());
Log.d("INSTANT", "registered content observer");
this.getApplicationContext()
.getContentResolver()
.registerContentObserver(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, false,
observer);
Log.d("INSTANT", "registered content observer");
Es ließ mich wissen, dass eine Änderung in der SD-Karte im Zusammenhang mit Audiodateien aufgetreten ist. Es gibt jedoch keinerlei Informationen darüber, welche Datei hinzugefügt, bearbeitet oder gelöscht wurde.
Dann suchte ich nach einer Lösung und bekam diesen Beitrag
Android: So erkennen Sie eine Änderung in MediaStore, wenn eine Verbindung über MTP hergestellt wird
In diesem Beitrag wird ein Code von angegebenBhiefer Als Antwort, von der ich denke, dass sie funktionieren könnte, habe ich versucht, sie umzusetzen, aber ich bin dazu nicht in der Lage.
Was kann ich dafür tun?
AktualisierenKann ich Audio.Media.EXTERNAL_CONTENT_URI nach den neuesten Änderungen abfragen? Dieser Code:
mCursor = context.getContentResolver().query(
Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id");
mCursor.moveToLast();
gibt nicht die neuesten Änderungen. Gibt es eine andere Methode, um die neuesten Änderungen zu erhalten?