Android 11 - Kiosk 模式锁屏 NFC 问题

Posted

技术标签:

【中文标题】Android 11 - Kiosk 模式锁屏 NFC 问题【英文标题】:Android 11 - Kiosk Mode Lock Screen NFC Issue 【发布时间】:2021-10-13 21:27:09 【问题描述】:

我有一个使用 android 管理 API 作为信息亭运行的应用程序 - 我的一些客户更喜欢使用 Intune 和 Airwatch 等 MDM 平台。

我们将三星 XCover 系列用于我们的专用设备。

Android 11 似乎出现了一个新问题。

手机在运行时,无论是作为单次使用 Kiosk 应用程序锁定到我的应用程序,还是使用第三方 MDM 平台进行多应用程序设置,一段时间后屏幕都会超时。一旦屏幕超时,Android 11 设备会进入“滑动锁定”,但会在其上显示应用程序或 MDM 信息亭(因此用户不知道发生了这种情况)。这会导致 NFC 停止运行,因为设备实际上已被锁定。

这可以复制和验证如下:

    带上两部手机,一部是 Android 11,一部是 Android 9。 配置它们以使用任何应用程序作为信息亭运行 等待两部手机的屏幕超时。 最后更新策略以“force_installed”运行。 Android 11 手机会返回“滑动解锁”,Android 9 手机不会。

在 Android 10 上也会出现同样的问题,但可以通过在设备设置中将锁定屏幕关闭来轻松解决。不幸的是,在 Android 11 上,禁用此功能似乎不会影响设备在作为信息亭运行时的锁定状态。

我已经为锁定到我们应用程序的设备提出了一个临时解决方案,方法是在应用程序在前台运行时保持屏幕处于活动状态。但是,这并不适合我们在其环境中也使用其他应用程序的客户。

【问题讨论】:

【参考方案1】:

也许通过 DevicePolicyManager 禁用 Keyguard 有效?

DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVIEC); 
dpm.setKeyguardDisabled(yourAdminComponentName, true);

【讨论】:

不幸的是,这会引发安全异常“不拥有配置文件”尽管dpm.isAdminActive(deviceAdminComponentName) 返回 true 我还尝试使用 'dpm.isAdminActive(deviceAdminComponentName)' 遍历所有设备管理包其他 3 个管理员,每个都抛出相同的安全异常,如下所示“不属于 uid 10247” 有趣的是,通过 Android Management API 设置策略会返回相同的结果。屏幕超时时设备仍会锁定。 '"keyguardDisabled": true, '

以上是关于Android 11 - Kiosk 模式锁屏 NFC 问题的主要内容,如果未能解决你的问题,请参考以下文章

Android 8.1(API 27) - 重启后键盘未在Kiosk模式应用中显示

在 Kiosk 模式下禁用 Android 导航(Android 管理 API)

NativeScript for Android App 中的 Kiosk 模式

如何通过 Android Management API 在 KIOSK 模式下允许 systemui 活动?

调用新应用程序时如何保持 Android 在 Kiosk 模式下运行?

使用 Android 管理 API 策略时,Android Kiosk 模式不起作用