Android registerContentObserver

Android registerContentObserver,android,android-contentresolver,Android,Android Contentresolver,我想得到关于任何音频通知的回拨。 我创建了一个观察者: getContentResolver().registerContentObserver(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, false, new MyContentObserver(_handler) { ... 我每次换一首歌,然后添加或删除一些歌曲 但我不理解另一个:我将一些文件(test.log)复制到设备上。复制文件后,我没有得到任何更改。但是如果我删除这个文件,我会得到一次

我想得到关于任何音频通知的回拨。 我创建了一个观察者:

getContentResolver().registerContentObserver(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, false, new MyContentObserver(_handler) { ...
我每次换一首歌,然后添加或删除一些歌曲


但我不理解另一个:我将一些文件(test.log)复制到设备上。复制文件后,我没有得到任何更改。但是如果我删除这个文件,我会得到一次更改。但是为什么呢?

在内容提供商中,您可以定义应该为哪些操作发送通知。下面是
delete()
操作的示例

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
    final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    switch (sUriMatcher.match(uri)) {
        case POSTS: {
            int rowCount = db.delete(DatabaseProperties.TABLE_NAME_POSTS, selection, selectionArgs);
            getContext().getContentResolver().notifyChange(uri, null);
            return rowCount;
        }
        default: {
            throw new UnsupportedOperationException("Unknown URI: " + uri);
        }
    }
}

您可能错过的命令是
notifyChange()

在内容提供商中,您可以定义应该为哪个操作发送通知。下面是
delete()
操作的示例

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
    final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    switch (sUriMatcher.match(uri)) {
        case POSTS: {
            int rowCount = db.delete(DatabaseProperties.TABLE_NAME_POSTS, selection, selectionArgs);
            getContext().getContentResolver().notifyChange(uri, null);
            return rowCount;
        }
        default: {
            throw new UnsupportedOperationException("Unknown URI: " + uri);
        }
    }
}
您可能错过的命令是
notifyChange()