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

上面的代码在Emulator以及带有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_URIMediaStore.Images.Thumbnails.INTERNAL_CONTENT_URI. 这对我有用还是我必须做其他事情。请指导我。

4

1 回答 1

1

唯一的区别是 Galaxy Nexus 在 Android 4.0 中运行并且不支持 SDCard,而是它具有 13 GB 的内部存储。

你正在尝试从外部存储中读取:)

改变

i.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+ id));

i.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.INTERNAL_CONTENT_URI, ""+ id));
于 2012-06-11T14:03:10.477 回答