如何解决Android 11使用Camera捕获图像
文档-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。并且如果我跳过此检查,则相机打开但应用程序崩溃。
解决方法
将它们添加到清单部分的AndroidManifest.xml中:
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
,
Jaakko的答案是正确的,这是一个简短的解释:
-
自API级别30开始,程序包可见性已发生更改。 https://developer.android.com/about/versions/11/privacy/package-visibility
-
为使软件包管理器正常工作,您需要在
<queries>
中声明AndroidManifest.xml
:
代码:
<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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。