ギャラリーから画像を取得するプログラムがあります。これが私のコードです:
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
ます。これでうまくいくのでしょうか、それとも何か他のことをしなければなりません。私を案内してください。