查询MediaStore.Images.Media,如何在EXTERNAL_CONTENT_URI和INTERNAL_CONTENT_URI上查询?

时间:2013-02-09 20:15:38

标签: android android-image mediastore

首先感谢你的帮助。

我认为对于那些不陌生的内容提供商来说,这应该是一个相当微不足道的问题。不是我......: - )

我需要查询 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。

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

无法使用单个查询检索这两个结果,因为查询是在特定位置(内部或外部)进行的。你需要实例化两个dirrefent Cursors

答案 1 :(得分:2)

很抱歉,这个版本太旧了,无法提供帮助,但您可以使用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);