Android startActivityForResult 在使用相机时向 onActivityResult 返回 null

标签 android android-intent android-activity

我在 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/

相关文章:

android ->adb shell su,未获得root权限

javascript - 无法从 `../../../../src/redux` 解析模块 `node_modules\react-redux\lib\connect\mapDispatchToProps.js`

android - 使用提供的 backstack 开始 Activity

android - 如何决定何时在单独的进程中运行不同的 android 应用程序组件

java - Android 中偏好 Activity 的 onclick 监听器

java - 对其他贡献者隐藏部分代码

Android在shell脚本中仅使用PS和GREP查杀进程

java - Android 将字符串从一个 Activity 发送到另一个 Activity 不起作用

java - 尝试检索和裁剪图像后未返回任何数据

android - 如何防止过渡到 Activity