Android 没有锁屏的 Kiosk 模式

Android Kiosk Mode without lockscreen

我正在尝试配置 Android 单机版应用程序。我使用 Android 6.0 的华为 P8 Lite 和 Android 6.0 的三星 Galaxy A3 2017。我将应用程序设置为设备所有者,一切正常。我通过 adb 停用了 Toast 消息并将主页按钮设置为应用程序。所以一切正常。当我启动应用程序时,您不能再离开它,即使重新启动也是如此。但是现在还剩下2个问题。在三星上,使用 adb 代码

停用 Toast 消息效果很好

adb shell appops 设置 android TOAST_WINDOW 拒绝

但是在华为上不行。它没有显示错误。

三星的第二个问题。当我重新启动华为并按下 "Home" 按钮时,我直接进入了应用程序,而无需在锁定屏幕上滑动。当我在三星上打开应用程序时,它是一样的,但在重新启动后,我总是在进入应用程序之前进入锁屏。这是一个小问题,因为向下滑动可以打开下拉菜单。那里的按钮不起作用,但我想在按下主页或电源按钮时直接进入应用程序。

所以我的问题是: - 如何停用华为的吐司消息? - 如何停用三星的整个锁屏?

有人知道吗?

谢谢

要绕过三星的锁屏,您可以尝试通过在设备启动后立即启动 activity 来唤醒设备,使用以下标志

this.getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
    WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

复制自how to wakeup android phone from sleep?. Just make sure that you have chosen "None" as a screen lock type or called setKeyguardDisabled,效果相同

要停用 toast,您需要 root 权限,因此您的设备需要获得 root 权限,您需要执行以下操作

adb root & adb shell appops set android TOAST_WINDOW deny