不在 ContentObserver 中的最新更改
Latest Change not in ContentObserver
当我的 ContentObserver 因为一张新拍的照片而被调用时,
那张最新的照片在查询中无处可寻。
我正在这样注册我的 ContentObserver:
getContentResolver()
.registerContentObserver(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
false,
imageObserver
);
然而,以下回调只能查询之前的最后一张图像,而不是新拍摄的图像本身:
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, "date_added DESC");
String filePath = null;
if(cursor.moveToFirst()){
filePath = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
}
cursor.close();
}
如何在回调中找回真实的最新图片?
我想通了:
第二个参数必须为真:
getContentResolver()
.registerContentObserver(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
true,
imageObserver
);
这允许您执行以下操作:
cursor = getContentResolver().query(uri, null, null, null, null);
只是不要忘记跟踪您已经处理过的 ID,因为一张照片可能会触发多个事件...
当我的 ContentObserver 因为一张新拍的照片而被调用时, 那张最新的照片在查询中无处可寻。
我正在这样注册我的 ContentObserver:
getContentResolver()
.registerContentObserver(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
false,
imageObserver
);
然而,以下回调只能查询之前的最后一张图像,而不是新拍摄的图像本身:
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, "date_added DESC");
String filePath = null;
if(cursor.moveToFirst()){
filePath = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
}
cursor.close();
}
如何在回调中找回真实的最新图片?
我想通了:
第二个参数必须为真:
getContentResolver()
.registerContentObserver(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
true,
imageObserver
);
这允许您执行以下操作:
cursor = getContentResolver().query(uri, null, null, null, null);
只是不要忘记跟踪您已经处理过的 ID,因为一张照片可能会触发多个事件...