我在 startActivityForResult/onActivityResult 中遇到问题,其中数据返回 null。我使用 startActivityForResult(camera) 并设法将图像保存到设备中。
这是 Activity 中调用相机的部分
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.upload_new_tire);
setUpWings();
imageButton.setOnClickListener(new MyCamera(this));
}
这是我的 onActivityResult 函数
protected void onActivityResult(int requestCode,int resultCode, Intent data){
Log.i("request, result Code", String.valueOf(requestCode) + " and " + String.valueOf(resultCode));
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK && data != null){
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap)extras.get("data");
imageButton.setImageBitmap(imageBitmap);
}
}
这是我调用 startActivityForResult 并将图像保存到文件的地方。
Uri photoURI = FileProvider.getUriForFile(mContext,
"autosoftpro.reusedtire.fileprovider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
mContext.startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
这是错误消息,它发生是因为“Intent 数据”为空。我试图查看其他类似的帖子,但未能找出原因。
java.lang.RuntimeException: Failure delivering result
ResultInfo{who=null, request=1, result=-1, data=null} to activity {autosoftpro.reusedtire/autosoftpro.reusedtire.UploadTireActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
最佳答案
it happens because 'Intent data' is null
如 the documentation for ACTION_IMAGE_CAPTURE
中所述,有两种可能:
您在
ACTION_IMAGE_CAPTURE
Intent
中包含了EXTRA_OUTPUT
。在这种情况下,您不会在传递给onActivityResult()
的Intent
中返回任何内容,但您已经知道图像应该放在哪里。您不包含
EXTRA_OUTPUT
,在这种情况下,data
extra 将是缩略图“位图”。
您包含了 EXTRA_OUTPUT
,这意味着您不应该检查 data
extra。相反,在 EXTRA_OUTPUT
中指定的位置查找图像。
关于Android startActivityForResult 在使用相机时向 onActivityResult 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37947930/