我有从画廊加载图像的代码,但我真的不明白它是如何工作的。下面是代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { //Browse Gallery is requested
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
loadImage(picturePath); //load picture according the path
image_View.setImageBitmap(pic); //Show the selected picture
}
}
Uri selectedImage = data.getData();
从意图中获取选定图像的URI
String[] filePathColumn = { MediaStore.Images.Media.DATA };
MediaStore.Images.Media.DATA是一个常量。我不理解为什么不使用String而是使用String[]。
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
我不理解这行代码。
cursor.moveToFirst();
移动到画廊中的第一张图片。
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
无论我选择哪张图片,这个问题总是返回0。
String picturePath = cursor.getString(columnIndex);
由于columnIndex始终为0,那么它如何为不同的图片获取不同的路径呢?
有人能帮我检查我的解释是否正确并解释我不理解的那一行吗?谢谢。