2

MediaStore でイメージ ID を取得しました。ID を使用してギャラリー内の画像を表示するにはどうすればよいですか? 現在、次のコードを使用しています。

    ContentResolver cr = context.getContentResolver();

    String columns[] = new String[]{  
        Media._ID, Media.DATA
    };
    Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, Media._ID+"=?", new String[]{id+""}, null);
    if(cursor.moveToNext()) {
        String imagePath = cursor.getString(cursor.getColumnIndex(Media.DATA));
        Uri imageUri = Uri.fromFile(new File(imagePath));

        Intent intent = new Intent();
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.addCategory(android.content.Intent.CATEGORY_DEFAULT);
        intent.setDataAndType(imageUri, "image/*");
        ((Activity)context).startActivity(intent);
    }

動作しますが、面倒です。これを行う簡単な方法があるはずだと思います。重要なのは、画像 ID から画像 Uri を取得することです。

4

1 に答える 1

13
int imageID = cursor.getInt( cursor.getColumnIndex(MediaStore.Images.Media._ID) ); 

Uri uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) );

ID から Uri を取得するには、次のコードを使用します。

private void getPhoneGalleryImages() {

    Cursor cursor = cr.query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,
            null, null);
    cr = getActivity().getContentResolver();
    if(cursor != null)
    {
        if (cursor.moveToFirst()) {
            do {
                String id = cursor.getString(cursor
                        .getColumnIndex(MediaStore.Images.Thumbnails._ID));
                String path = cursor.getString(cursor
                        .getColumnIndex(MediaStore.Images.Media.DATA));
            } while (cursor.moveToNext());
        }
        cursor.close();
    }
}
于 2013-06-08T09:14:42.883 に答える