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ügen

Zuvor 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?

Aktualisieren

Kann 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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage