ContentObserver только уведомляет, когда я удаляю или обновляю значения - PullRequest
0 голосов
/ 28 марта 2020

Это вызывается только когда я обновляю или удаляю значения в MediaStore , но по какой-то причине, когда я вызываю resolver.insert(sArtworkUri, valuesAlbum); только ContentObserver Метод OnChange () не вызывается.

Log.d("MediaStoreObserver", "Change detected!");

Активность с зарегистрированным наблюдателем

 Handler handler;
        handler = new Handler();
        observer = new MediaStoreObserver(handler);
        this.getContentResolver().
                registerContentObserver(
                        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                        true,
                        observer);

Код, изменяющий содержимое в MediaStore

//Update song info.
  String where = MediaStore.Audio.Media._ID + "=?";
  String[] whereVal = {Long.toString(songID)};
  resolver.update(musicUri, values, where, whereVal);

//Update albumArt.
  resolver.delete(albumArtUri, null,null);
  resolver.insert(sArtworkUri, valuesAlbum);

Класс наблюдателя

public class MediaStoreObserver extends ContentObserver {
    public MediaStoreObserver(Handler handler) {
        super(handler);
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
    }

    @Override
    public void onChange(boolean selfChange, Uri uri) {
        super.onChange(selfChange, uri);
        Log.d("MediaStoreObserver", "Change detected!");
    }
}
...