java - Android 11 使用相机拍摄图像

标签 java android image camera capture

文档 - 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。如果我跳过此检查,则相机会打开但应用程序崩溃。

最佳答案

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

    关于java - Android 11 使用相机拍摄图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63950633/

    相关文章:

    image - grep 删除 WordPress 'crunched' 文件

    java - 在Java中加载和显示HTML+CSS

    Java反射,调用传入对象的类的方法

    java - 从 Map 创建列表,其中包含 Map 值的前 N ​​个对象

    android - 带有 cordinator 布局的操作栏不会 "snap"在部分更改 android 时完全隐藏或完全显示

    jquery - 保持标题宽度与图像相同,并让周围的文本换行

    asp.net - 在 asp.net mvc 中显示来自数据库的图像

    java - MQTT 请求 token

    android - getFilesDir() 返回 null

    android - 为什么 RecyclerView 项目中的 ConstraintLayout 比 LinearLayout 慢?