Android开发:如何防止用户未经许可退出应用或重启平板设备
Android平板Kiosk模式锁定可行方案
一、原生Android官方稳定方案(优先推荐)
- 启用设备所有者模式(Device Owner):Android 5.0及以上版本原生支持的单应用场景专属方案,开启后可实现全系统级限制,完全满足酒吧场景的防误操作需求:
- 可屏蔽返回、Home、多任务等所有系统按键,完全禁止退出当前应用
- 可配置禁用电源键长按关机/重启、禁用下拉通知栏、禁用音量调整、禁用系统弹窗
- 配置步骤:
- 先清空平板内所有已绑定账号(包括谷歌账号、平板厂商自带账号)
- 在应用AndroidManifest.xml中声明设备管理员权限,注册对应的DeviceAdminReceiver子类
- 平板开启USB调试后,通过adb执行命令
dpm set-device-owner 你的应用包名/.DeviceAdminReceiver子类名完成绑定
- 绑定完成后可通过DevicePolicyManager类的API实现所有限制配置,比如调用
setKeyguardDisabled()禁用锁屏、setStatusBarDisabled()禁用状态栏。 - 注意:设备所有者绑定后普通用户无法直接恢复出厂设置,建议在应用内预留管理员专用入口,可调用
clearDeviceOwnerApp()方法解除绑定方便后期维护
二、替代适配方案(适配限制设备所有者权限的定制ROM)
如果平板厂商的定制ROM无法开启设备所有者模式,可通过以下适配方案实现接近的效果:
- 重写Activity的
onKeyDown方法,拦截返回、音量按键事件,直接返回true消费事件,示例代码:@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { return true; } return super.onKeyDown(keyCode, event); } - 将应用设置为默认启动器:在应用主Activity的intent-filter中添加HOME、DEFAULT分类,用户按Home键会直接回到你的应用,无法进入系统桌面
- 针对电源键限制,可申请
android.permission.PREVENT_POWER_KEY权限(多数国产ROM支持),同时监听ACTION_SCREEN_OFF系统广播,收到广播后立刻唤醒屏幕,降低用户长按关机的成功率
三、配套优化建议
- 可定制平板保护套,对物理按键位置做物理遮挡,和软件限制形成双重防护
- 提前告知客户:软件层面无法100%规避用户长按电源键10秒以上强制断电重启的极端操作,建议提前配置平板开机自动启动你的应用,重启后可自动回到业务界面不影响使用
内容的提问来源于stack exchange,提问作者An Nguyen
相关产品推荐
相关产品推荐

