2

そして、まず第一に、あなたの助けに感謝します.

これは、コンテンツ プロバイダーのクエリに慣れていない人にとっては、かなり些細な質問だと思います。

内部ストレージと SD カードの両方で、デバイス上のすべての画像を取得するには、MediaStore.Images.Mediaにクエリを実行する必要があります。

これは私が念頭に置いているクエリです:

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 を使用して 2 つのクエリを組み合わせることができます。

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

It's not possible to retrieve both results with a single query since the query is permofmed in a specific location (internal or external). You need yo instantiate two dirrefent Cursors.

于 2013-02-09T20:47:59.053 に答える