不在 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,因为一张照片可能会触发多个事件...