来自相机的onActivityResult给出了null意图

时间:2015-03-13 11:27:35

标签: java android android-intent

所以直到昨天我将手机升级到5.0.0并在5.0.0模拟器中测试了应用程序时,这一点很可爱。基本上目的是允许用户拍照,返回,打开它以允许裁剪然后返回并将其设置为图像视图。

之前一切正常,但现在onActivityResult的意图为空。

这是代码:

public void takeDisplayPicture(View view) {

    final String TAKE_DISPLAY_PICTURE = "Take Display Picture";

    Log.d(TAKE_DISPLAY_PICTURE, "Clicked");

    try {

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, CAMERA_CAPTURE);

    } catch (ActivityNotFoundException e) {

        String msg = "Your device doesn't support a camera!";

        Toast toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
        toast.show();

    }

}

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

    final String RETURN_DISPLAY_PICTURE = "Return Display Picture";

    Log.d(RETURN_DISPLAY_PICTURE, "Returned");

    if (resultCode == RESULT_OK && requestCode == CAMERA_CAPTURE) {

        picUri = data.getData();
        performCrop(picUri);

    } else if (requestCode == PIC_CROP) {

        Bundle extras = data.getExtras();
        bitmap = extras.getParcelable("data");
        displayPicture.setImageBitmap(bitmap);

    }

}

private void performCrop(Uri picUri) {

    try {

        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        cropIntent.setDataAndType(picUri, "image/*");
        cropIntent.putExtra("crop", "true");
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        cropIntent.putExtra("outputX", 256);
        cropIntent.putExtra("outputY", 256);
        cropIntent.putExtra("return-data", true);
        startActivityForResult(cropIntent, PIC_CROP);

    } catch (ActivityNotFoundException e) {

        String msg = "Your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
        toast.show();

    }

}

1 个答案:

答案 0 :(得分:1)

首先,Android does not have a CROP Intent

关于null Uri,它应该是null。引用the ACTION_IMAGE_CAPTURE documentation

  

调用者可以传递额外的EXTRA_OUTPUT来控制该图像的写入位置。如果EXTRA_OUTPUT不存在,则在额外字段中返回一个小尺寸图像作为Bitmap对象。

您没有EXTRA_OUTPUT,因此您应该通过记录不佳的(Bitmap)data.getExtras().get("data");来获取您的图片。