1

ギャラリーから画像を取得するプログラムがあります。これが私のコードです:

String[] id = {MediaStore.Images.Thumbnails._ID};
Cursor imageCursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, id, null, null, MediaStore.Images.Thumbnails.IMAGE_ID);
int image_col_index = imageCursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
int count = imageCursor.getCount();
//in a loop the below code goes {
    ImageView i = new ImageView(mContext.getApplicationContext());
    imageCursor.moveToPosition(position);
    int id = imageCursor.getInt(image_col_index);
    i.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+ id));
    i.setScaleType(ImageView.ScaleType.CENTER_CROP);
    i.setLayoutParams(new GridView.LayoutParams(70, 70));
    //here I am storing this image i to a list for further use
}//here loop ends

上記のコードは、 Android 2.2 または 2.3を搭載したGalaxy Sだけでなく、エミュレーターでも正常に動作します。しかし、Galaxy Nexusで実行すると、メモリからの画像の読み取りに失敗します。

唯一の違いは、Galaxy Nexus がAndroid 4.0で実行されており、 SDCardをサポートしていないことです。代わりに、13 GB の内部ストレージがあります。

私の質問は、Nexusで実行できるようにするには、上記のコードで何を変更する必要があるかです.

Nexus は外部ストレージをサポートしていないため、URI を からMediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URIに変更することで解決できると考えていMediaStore.Images.Thumbnails.INTERNAL_CONTENT_URIます。これでうまくいくのでしょうか、それとも何か他のことをしなければなりません。私を案内してください。

4

1 に答える 1