经Android Management API注册的设备可否程序化切换lockedTaskMode
核心配置原则
不要使用installType: KIOSK配置,该模式为系统级强制永久锁任务模式,不支持应用端主动退出。所有配置基于普通REQUIRED安装类型实现,既满足默认常驻锁任务的需求,也支持应用端通过API自由切换状态。
可直接复用的Policy配置
将以下配置合并到你的设备政策中,即可满足开机自启、无弹窗进入锁任务的基础需求:
- 主Kiosk应用
installType设为REQUIRED,不要使用KIOSK或REQUIRED_FOR_SETUP类型 - 在
lockTaskAllowed数组中添加主应用包名,将应用加入锁任务白名单,应用调用startLockTask()时不会弹出用户授权提示 - 配置
persistentPreferredActivities将主应用设为HOME intent默认处理者,替代kioskCustomLauncherEnabled配置实现开机自启 - 关闭锁屏相关配置:将
keyguardDisabled设为true、advancedSecurityOverrides.unifiedLockScreenDisabled设为true,开机不会弹出PIN验证、锁屏界面 - 应用自动更新配置:将主应用的
autoUpdateMode设为AUTO_UPDATE_HIGH_PRIORITY,系统会在新版本发布后第一时间自动安装更新,无需用户操作 - 状态栏、系统UI控制:通过
statusBarDisabled、systemNavigation参数按需屏蔽系统手势、快捷设置入口,避免用户误触退出
persistentPreferredActivities配置示例:
"persistentPreferredActivities": [ { "receiverActivity": "你的应用包名/你的主启动Activity全类名", "actions": ["android.intent.action.MAIN"], "categories": ["android.intent.category.HOME", "android.intent.category.DEFAULT"] } ]
对应问题的解决说明
无法提前配置全量锁任务白名单问题
锁任务白名单不是设备注册时固定的,后续需要新增调试、维护类应用时,直接调用AMAPI的政策更新接口修改lockTaskAllowed数组即可,设备通常会在1分钟内同步最新政策,无需重新注册或重置设备。临时调试使用的应用可以在调试结束后从白名单移除,不需要初始阶段枚举所有可能用到的应用。KIOSK安装类型下
stopLockTask()调用后应用重启问题installType: KIOSK是Android为专用设备设计的强制管控模式,DPC会持续监控锁任务状态,一旦检测到应用退出锁模式,会立刻重新拉起应用并强制加锁,不存在绕过方式,要支持程序化退出锁模式必须弃用该安装类型。REQUIRED_FOR_SETUP类型下无法启动锁任务问题REQUIRED_FOR_SETUP是设备初始配置阶段的临时应用类型,配置流程完成后应用会被收回特殊权限,且不会被加入锁任务白名单,自然无法调用startLockTask()。将应用安装类型改为REQUIRED并显式加入lockTaskAllowed列表即可正常调用锁任务接口。kioskCustomLauncherEnabled: true时自有应用无法设为自启Launcher问题
该参数用于启用DPC内置的定制Kiosk启动器,开启后DPC启动器会持有最高HOME优先级,第三方应用无法抢占默认Launcher位置。将该参数设为false,通过上述persistentPreferredActivities配置即可将自有应用设为开机默认启动的Launcher。
应用端实现逻辑
- 应用主Activity的
onResume生命周期中判断当前锁任务状态,未处于锁模式时主动调用startLockTask(),由于应用已经在政策白名单中,调用后会直接进入锁模式,无任何弹窗提示 - 维护、调试场景需要退出锁模式时,直接调用
stopLockTask()即可,由于未使用KIOSK强制模式,DPC不会干预该操作,退出后可正常操作设备、打开白名单内的其他应用 - 调试完成需要恢复锁模式时,再次调用
startLockTask()即可,也可通过重启主应用触发自动加锁逻辑 - 如需临时放开全量设备权限做深度调试,可临时下发调试政策放开系统UI、应用安装权限,调试完成后切回正式政策即可,无需修改端上代码
流程简化说明
- 初始配置:将上述政策、WiFi配置、设备注册信息全部写入QR码,设备开机后扫描QR码即可自动完成所有配置、安装应用、拉起进入锁模式,全程无手动操作步骤
- 应用更新:直接在Google Play管理中心上传新版本APK,配置的自动更新策略会在设备空闲、连接WiFi时自动安装更新,更新完成后系统会自动重启应用,仅需在端上做好运行状态持久化即可。
内容的提问来源于stack exchange,提问作者DKavaliou

