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()