Android操作系统在从图库中拾取图像之前调用onActivityResult

时间:2015-04-21 03:04:25

标签: android imageview android-imageview android-gallery android-bitmap

从图库中选择图片并设置为ImageView时,我遇到了一个奇怪的问题。之前我的代码工作正常,但是当我现在测试它时,它会进入onActivityResult,然后从图库中选择图像。以下是我的代码:

调用图库代码:

  Intent intent = new Intent();
  intent.setType("image/*");
  intent.setAction(Intent.ACTION_GET_CONTENT);
  startActivityForResult(Intent.createChooser(intent, "Select Picture"),
    PICK_IMAGE);

内幕代码onActivityResult

 if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK
   && null != data) {
  Uri selectedImage = data.getData();
  String[] filePathColumn = { MediaStore.Images.Media.DATA };

  Cursor cursor = getActivity().getContentResolver().query(selectedImage,
    filePathColumn, null, null, null);
  cursor.moveToFirst();

  int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
  String picturePath = cursor.getString(columnIndex);
  cursor.close();

  decodeFile(picturePath);

 }

decodeFile功能的代码:

public void decodeFile(String filePath) {
 // Decode image size
 BitmapFactory.Options o = new BitmapFactory.Options();
 o.inJustDecodeBounds = true;
 BitmapFactory.decodeFile(filePath, o); 

 // The new size we want to scale to
 final int REQUIRED_SIZE = 2048;

 // Find the correct scale value. It should be the power of 2.
 int width_tmp = o.outWidth, height_tmp = o.outHeight;
 int scale = 1;
 while (true) {
  if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE)
   break;
  width_tmp /= 2;
  height_tmp /= 2;
  scale *= 2;
 }

 // Decode with inSampleSize
 BitmapFactory.Options o2 = new BitmapFactory.Options();
 o2.inSampleSize = scale;
 bitmap = BitmapFactory.decodeFile(filePath, o2);

 customerIdProofUrlImageView.setImageBitmap(bitmap);
}

我不知道故障在哪里。测试Galaxy Grand&amp; Micromax A104。

1 个答案:

答案 0 :(得分:2)

检查一下: onActivityResult return before pick up image

尝试删除清单文件中的 android:launchMode =“singleInstance”行。