遇到一个问题,在锁屏状态下调用相机调用不起来,查看了一下日志在调用相机的时候报了权限拒报错的语句为android.permission.SYSTEM_CAMERA 权限拿不到,就在应用里面配置了一下这个权限发现问题依旧,找到了部分蛛丝马迹:

解决这个问题的方式 一 :

AndroidManifest下添加 : <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" /> 

解决问题的方案二

找到了google官方说明

如下:

在搭载 Android 11 或更高版本的设备上,Android 框架支持系统相机,这些相机设备仅对具有 android.permission.SYSTEM_CAMERA 权限和常规相机权限的进程可见。Android 11 中引入了 android.permission.SYSTEM_CAMERA 权限,其保护级别为 system|signature。这意味着,只有安装在系统分区上且具有与系统相同的证书或使用该证书进行签名的应用才能获得此权限。第三方公开应用无法访问系统相机。

如果设备制造商希望实现需要访问相机的功能,但这些功能仅限于特权应用或系统应用,系统相机会很有用。

由于获得 android.permission.SYSTEM_CAMERA 权限的系统应用还必须具有 android.permission.CAMERA 权限,因此用户可以选择撤消常规的 CAMERA 权限,以防止此类应用访问设备上的相机。

实现

如需将特定相机设备作为系统相机,相机 HAL 必须在其功能列表中公布 ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA

如需创建有权访问系统相机的应用,必须在特定于设备的 privapp-permissions.xml 文件中将相应应用列入白名单该文件用于指定必须向哪些应用予 android.permission.SYSTEM_CAMERA 权限。

看到这 理解了为啥 Android10 没有问题Android11 即使配置了 android.permission.SYSTEM_CAMERA也是无用的,必须是拥有系统签名,而且还要再在 privapp-permissions.xml配置白名单之后才能启用。

附上Google管方说明。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐