Kiosk 单应用模式:自助终端设备锁定
什么场景需要 Kiosk
把 Android 设备做成只能跑一个 App 的自助终端——用户不能切换应用、不能按 Home、不能看通知。典型场景:
- 商场导购机(只能跑 WebView Kiosk 浏览商品)
- 餐厅点餐机(只能跑点餐 App)
- 公共信息查询屏(只能跑信息查询 App)
- 考试答题设备(只能跑考试 App)
- 酒店房间控制屏(只能跑酒店控制 App)
- 数字标牌(只能跑媒体播放器)
前置条件
设备必须是 Device Owner 模式(Dhizuku/Work Profile 权限不够,锁定任务模式的完整功能只有 Device Owner 能用)。
配置步骤
第一步:安装 Kiosk App
选一个支持 Device Owner Lock Task Mode 的 App:
- WebView Kiosk(开源):把任意 URL 作为全屏 WebView 运行
- Chrome / Edge 锁定:企业版 Chrome 支持 Lock Task Mode 的单标签模式
- 自定义 App:自己开发的 Kiosk 应用(Android Enterprise 有完整 Lock Task Mode 指南)
第二步:锁定任务模式白名单
- OwnDroid → 系统 → 锁定任务模式
- 点击「添加应用」
- 把 Kiosk App 的包名、系统 Home 应用的包名、以及你希望 Kiosk 模式下能调用的辅助 App(如打印机、扫码器)全部加入白名单
- 保存白名单
白名单里必须包含 Home 应用——否则触发锁定后设备会卡在无响应状态。
第三步:配置辅助限制
OwnDroid 建议对 Kiosk 设备开启的辅助限制:
| 限制 | 理由 |
|---|---|
| 禁止截屏 | 保护 Kiosk 内容版权或安全信息 |
| 禁用摄像头 | 防止用户用摄像头拍摄屏幕 |
| 禁用 USB 信号 | 防止外部 USB 设备窃取数据 |
| 禁止恢复出厂设置 | 防止用户重置设备绕过 kiosk |
| 禁止安装/卸载应用 | 锁定的 kiosk 不需要其他 App |
| 全局静音 | 商场/餐厅环境需要安静 |
| 禁用蓝牙/NFC | 防止蓝牙劫持或 NFC 支付干扰 |
第四步:触发锁定
手动触发:在 OwnDroid 的锁定任务模式区域点击启动按钮。
API 远程触发:
# 需要先确保 Kiosk App 在前台启动
am broadcast -a com.bintianqi.owndroid.action.LOCK_TASK_START ^
-n com.bintianqi.owndroid/.ApiReceiver ^
-e key YOUR_API_KEY
第五步:防止重启后自动退出
Android 的 Lock Task Mode 重启设备后会自动解除。有两种持久化方案:
- 开机自触发——OwnDroid API 配合自动化工具(如 Automate)监听 BOOT_COMPLETED 广播后自动再次触发锁定
- Kiosk App 自恢复——支持 Lock Task Mode 的 App 本身可能在启动时调用 DevicePolicyManager.startLockTask()
WebView Kiosk 的额外配置
WebView Kiosk 项目有专门的 Device Owner 集成指南:
- 先激活 OwnDroid Device Owner
- 安装 WebView Kiosk
- OwnDroid 锁定任务模式白名单加入 WebView Kiosk 包名和 Home 包名
- WebView Kiosk App 里配置要显示的 URL
- OwnDroid 触发锁定
- 设备全屏显示指定 URL,用户无法退出
退出 Lock Task Mode
只有 Device Owner 能退出:
- OwnDroid 界面里点击「停止锁定任务模式」
- API 调用
dpm.stopLockTask() - 没有退出密码或用户手势——普通用户不可能退出
常见问题
锁定后 Kiosk App 打不开
白名单里没有 Home 应用——系统无法在锁定模式下启动任何非白名单的 App,包括 Home。加上 Home 包名再试。
锁定模式下 Kiosk App 想调用相机/打印机
相机/打印机 App 的包名也必须加入白名单。
重启后自动解锁
Android Lock Task Mode 的设计如此——重启后解除。用开机自触发自动化脚本来解决。