gpt4 book ai didi

android - MediaStore.EXTRA_OUTPUT 在横向模式下始终包含 null

转载 作者:行者123 更新时间:2023-11-30 00:50:04 27 4
gpt4 key购买 nike

我正在尝试打开相机并设置相机图片应保存到的路径,如下行所示:

takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(this.mFileImgPath))

我遇到的问题是,如果我在相机处于肖像模式时拍摄照片,那么“onActivityResult”将被正常调用,当我检查“mFileImgPath”时,它将不为空。但是当我使用相同的代码并拍照时在横向模式下,将调用“onActivityResult”,但“mFileImgPath”始终为空。

为了进一步调查,我使用了调试器,如果我尝试在 Lanscape 模式下拍照,'mFileImgPath' 始终为 null。请看一下调试器的屏幕截图

请告诉我为什么“mFileImgPath”在横向模式下总是为空?以及如何解决它

代码

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
this.mFileImgPath = new File(App.instance.getOutDir() + "/" + new Date().getTime());
Log.e(TAG, "mFileImgPath" + mFileImgPath);

takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(this.mFileImgPath));

调试器

enter image description here

如屏幕截图所示,“mFileImgPath”为空,当我点击 steo over 时,调试器会跳过 if 条件

最佳答案

这是使用内置摄像头时的已知问题。为了解决这个问题,您必须通过 onSaveInstanceState()onRestoreInstanceState() 保留 uri。

  • 在声明 startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE) 之前,声明 intent.putExtra(..) 这样:

    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
  • 现在将这 2 个方法放入您的 Activity 中

          /* Storing the file url as it'll be null after returning from camera app */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    // save file url in bundle as it will be null on scren orientation changes
    outState.putParcelable("file_uri", fileUri);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    // get the file url
    fileUri = savedInstanceState.getParcelable("file_uri");
    }
  • 不要尝试在 onActivityResult(int requestCode, int resultCode, Intent data) 中访问 Intent,参数 data 很可能为空。

关于android - MediaStore.EXTRA_OUTPUT 在横向模式下始终包含 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com