尝试检索和裁剪图像后没有返回任何数据

时间:2013-04-28 13:06:40

标签: java android android-intent

我使用图库视图供用户选择图像。当用户选择了图像时,他将被传递到“裁剪页面”。 (这不是我自己做的自定义活动)

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra("crop", "true"); 
startActivityForResult(photoPickerIntent, 1);

当我返回onActivityResult时,我的数据为空,我无法检索裁剪后的图像。

有谁知道如何解决这个问题? 谢谢!

2 个答案:

答案 0 :(得分:1)

尝试添加额外意图

intent.putExtra("return-data", true);

参见示例:

http://nullpointerblog.com/2012/06/17/android-photo-chooser-with-crop/

答案 1 :(得分:0)

使用此代码

private static final String TEMP_PHOTO_FILE = "temporary_holder.jpg";  

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra("crop", "true");
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());
photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(photoPickerIntent, REQ_CODE_PICK_IMAGE);

private Uri getTempUri() {
   return Uri.fromFile(getTempFile());
}

private File getTempFile() {

  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

    File file = new File(Environment.getExternalStorageDirectory(),TEMP_PHOTO_FILE);
    try {
        file.createNewFile();
    } catch (IOException e) {}

    return file;
 } else {

    return null;
  }
}

protected void onActivityResult(int requestCode, int resultCode,
    Intent imageReturnedIntent) {

super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

switch (requestCode) {
    case REQ_CODE_PICK_IMAGE:
        if (resultCode == RESULT_OK) {  
            if (imageReturnedIntent!=null) {

                File tempFile = getTempFile();

                String filePath= Environment.getExternalStorageDirectory()
                    +"/"+TEMP_PHOTO_FILE;
                System.out.println("path "+filePath);


                Bitmap selectedImage =  BitmapFactory.decodeFile(filePath);
                _image = (ImageView) findViewById(R.id.image);
                _image.setImageBitmap(selectedImage );

                if (tempFile.exists()) tempFile.delete();
            }
        }
   }       
}

添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Source