Android 12实现STILL_IMAGE_CAPTURE_SECURE不被系统识别问题咨询
导致Android 12设备无法响应STILL_IMAGE_CAMERA_SECURE intent的可能原因如下:
- 默认相机优先级逻辑变更:Android 12调整了锁屏相机的调用逻辑,不再默认弹出Intent选择器,会直接调用用户设置的默认相机应用的对应实现。如果谷歌相机被设为默认相机,系统就会直接跳转谷歌相机;如果未设置默认相机且无符合要求的系统内置相机,就会出现无响应的情况。你可以进入系统设置-应用-默认应用,将你的自研相机设为默认相机后再测试。
- 相机运行时权限校验要求新增:Android 12对安全相机调用增加了前置权限校验,只有已经获得用户授予的
android.permission.CAMERA运行时权限的应用,才会被纳入候选列表。如果你的应用还没有向用户申请相机运行时权限,即使注册了intent filter也会被系统过滤。 - 锁屏展示属性适配问题:Android 12中仅在Manifest里声明
showWhenLocked、showOnLockScreen属性已经不满足要求,需要在目标Activity的onCreate生命周期中显式调用以下代码:
// 适配Android12+锁屏唤起要求 setShowWhenLocked(true); setTurnScreenOn(true);
否则系统会判定你的Activity不支持锁屏场景展示,直接排除出候选列表。
- 废弃权限导致的拦截:
android.permission.DISABLE_KEYGUARD权限在Android 12中已经被正式废弃,使用该旧权限的应用会被系统判定不符合锁屏运行的安全要求。你需要替换为KeyguardManager系统服务的requestDismissKeyguard()方法来实现解锁相关逻辑。 - Intent Filter匹配规则变更:部分AOSP Android 12分支的系统发送
STILL_IMAGE_CAMERA_SECUREintent时会额外携带android.intent.category.LAUNCHERcategory,你可以在对应Activity的intent filter中新增该category声明,避免匹配失败:
<intent-filter> <action android:name="android.media.action.STILL_IMAGE_CAMERA_SECURE" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
内容的提问来源于stack exchange,提问作者Son of Stackoverflow
相关产品推荐
相关产品推荐

