使用相机在Android 11上拍摄照片

10

文档 - https://developer.android.com/training/camera/photobasics

我已按照所有要求的步骤使用相机拍摄图像。

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { // its always null
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

takePictureIntent.resolveActivity(getPackageManager()) - 这行代码始终返回null。如果我跳过这个检查,相机会打开但应用程序会崩溃。

takePictureIntent.resolveActivity(getPackageManager()) - 这行代码总是返回null。如果我跳过这个检查,相机会打开,但应用程序会崩溃。


resolveActivity() 返回 null 的问题在这里得到了解答:https://dev59.com/-FIG5IYBdhLWcg3w3Fk_。但如果与此无关,我们需要查看崩溃的堆栈跟踪信息。 - Mike M.
2个回答

20

Jaakko的回答是正确的,这里是一个快速解释:

代码:

<manifest package="your.package.name">
<queries>
    <intent>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
    </intent>
</queries>
</manifest>

这仅适用于默认相机应用程序。 如果您的应用程序正在使用某些第三方相机,则可以在此处找到一些信息:https://commonsware.com/blog/2020/08/16/action-image-capture-android-r.html


谢谢,你救了我的命! - Clamorious
1
但是,这甚至没有请求MANAGE_EXTERNAL_MEDIA权限!!! - Owais Yosuf

5

请将以下内容添加到AndroidManifest.xml文件中的manifest部分:

<queries>
  <intent>
    <action android:name="android.media.action.IMAGE_CAPTURE" />
  </intent>
</queries>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接