我是Android的新手。我在选择图像和返回结果时有问题。我有一种方法是getImageFromGallery()
我的范围是此方法调用,然后我将从图库中选择一个图像,然后作为位图返回。但是问题是 onActivityResult()
设置了位图后设置位图。如果我选择图像,应该返回选定的图像位图文件。请帮助找出解决方案。
这是我的代码。
private Bitmap bitmap;
public Bitmap getImageFromGallery(){
Intent i = new Intent(
Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
return bitmap;}
@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) {
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();
bitmap = BitmapFactory.decodeFile(picturePath);
}
}
我想返回选定的位图值。
尝试以下:
public void getImageFromGallery(){
Intent i = new Intent(Intent.ACTION_PICK);
i.setType("image/*");
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK){
Uri imageUri = intent.getData();
mBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
}
}
您的getImageFromGallery
无法返回位图,因为您尚未选择它。您只能在onActivityResult
中设置它。
请参阅此处的更多信息。