Android Inbuild(ActionImageCapture)意图返回null intent.无法传递结果{who = null}

Mah*_*ran 5 android nullpointerexception android-intent android-camera

我使用默认的相机意图来获取我的应用程序中的图像.问题是相机返回null onActivityResult().将ResultCodeRequestCode正在返回预期.

我的意图是:

private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 1224;
....
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)

OnactivityResult是:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
    //use imageUri here to access the image
    Uri imageuri = data.getData(); // here is getting crash 
    imageView.setImageFromUri(imageUri);
}
}
}

void setImageFromUri(Uri imgUri){
 ... TODO assign image from uri
}
Run Code Online (Sandbox Code Playgroud)

当我把Log我得到resultCode和responseCode不为null

resultCode = -1
requestCode = 1224
Run Code Online (Sandbox Code Playgroud)

我在哪里做错了?

但拍摄的照片存储在我指定的路径(imageUri)中

有没有其他方法可以使用相机获取图像.

Sha*_*ech 10

似乎你知道onActivityResult之前的imageUri.这不是正确的答案,但会很好.

intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
Run Code Online (Sandbox Code Playgroud)

//这个图像只是你要使用的图像

所以不要使用

 Uri imageuri = data.getData();
Run Code Online (Sandbox Code Playgroud)

只需使用你所知道的uri.

你的代码看起来像这样:

if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
  if (resultCode == RESULT_OK) {
//use imageUri here to access the image
imageView.setImageFromUri(imageUri); // imageUri should be global in the activity
  }
}
Run Code Online (Sandbox Code Playgroud)