2

首先感谢您的帮助。

我认为对于不熟悉查询内容提供程序的人来说,这应该是一个相当微不足道的问题。

我需要查询MediaStore.Images.Media以获取设备上的所有图像,包括内部存储和 sd 卡上的图像。

这是我想到的查询:

String[] proj = { MediaStore.Images.Media.DATA };

actualimagecursor = 
managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj,null, null, null);

关键是我想同时查询EXTERNAL_CONTENT_URI和INTERNAL_CONTENT_URI。

是否可以使用单个查询来执行它?

4

2 回答 2

3

抱歉,这太旧了,无法提供帮助,但您可以使用 MergeCursor 组合这两个查询。

Cursor[] cursors = new Cursor[2];
cursors[0] = mActivity.getContentResolver().query(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    new String[]{
            MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DATA,
            MediaStore.Images.Media.ORIENTATION,
            MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
            MediaStore.Images.Media.BUCKET_ID,
            MediaStore.Images.Media.MIME_TYPE ,
    },
    null,
    null,
    MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC"
);
cursors[1] = mActivity.getContentResolver().query(
    MediaStore.Images.Media.INTERNAL_CONTENT_URI,
       new String[]{
            MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DATA,
            MediaStore.Images.Media.ORIENTATION,
            MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
            MediaStore.Images.Media.BUCKET_ID,
            MediaStore.Images.Media.MIME_TYPE
       },
       null,
       null,
       MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC"
);
Cursor cursor = new MergeCursor(cursors);
于 2015-09-10T03:54:10.507 回答
2

由于查询是在特定位置(内部或外部)执行的,因此无法通过单个查询检索两个结果。您需要实例化两个 dirretent Cursors

于 2013-02-09T20:47:59.053 回答