Android 12 锁定模式 - 屏幕超时后 NFC 停止工作

3

我有几个使用Android Management API并运行在kiosk模式下的设备。

在从Android 10升级到Android 12后,我遇到了一个新问题,即NFC扫描问题。在设备重新启动后,一切似乎工作正常,如果我手动通过按电源按钮触发设备睡眠,并唤醒它,一切都很好。

但是,一旦设备的显示超时并按电源按钮唤醒它,NFC就停止工作了。

这里是一些NfcService的调试日志(设备已解锁,等待几秒钟后重新锁定):

2022-09-01 21:12:16.245 2325-2325/? D/NfcService: BroadcastReceiver - SCREEN_STATE_ON_UNLOCKED
2022-09-01 21:12:16.271 2325-2325/? D/NfcService: NfcServiceHandler - handleMessage(MSG_APPLY_SCREEN_STATE) - state: ON_UNLOCKED
2022-09-01 21:12:16.273 2325-2325/? D/NfcService: Discovery configuration equal, not updating.
2022-09-01 21:12:16.442 2325-4028/? D/NfcService: Disabling default Beam behavior
2022-09-01 21:12:16.520 2325-2325/? D/NfcService: BroadcastReceiver - SCREEN_STATE_ON_LOCKED
2022-09-01 21:12:16.520 2325-2325/? D/NfcService: NfcServiceHandler - handleMessage(MSG_APPLY_SCREEN_STATE) - state: ON_LOCKED
2022-09-01 21:12:17.284 2325-2325/? D/NfcService: NfcServiceHandler - debounceRfField() - debouncing RF_FIELD: 0 (cur:0, pol:true)
2022-09-01 21:12:17.284 2325-2325/? D/NfcService: NfcServiceHandler - debounceRfField() - Ignoring, already the current state
2022-09-01 21:12:18.244 2325-2325/? D/NfcService: BroadcastReceiver - SCREEN_STATE_OFF_LOCKED
2022-09-01 21:12:18.244 2325-2325/? D/NfcService: NfcServiceHandler - handleMessage(MSG_APPLY_SCREEN_STATE) - state: OFF_LOCKED

就我所看到的,屏幕已经解锁了,但有些东西会导致屏幕陷入锁定状态(SCREEN_STATE_ON_LOCKED)。
我可以确认这一点,因为如果我将设备悬停在NFC标签上并解锁它,它会立即扫描该标签,但第一秒后就完全不起作用了。
我还尝试过通过编程方式禁用密钥保护,但没有成功!
以下是当前有效的设备策略:
{
    "factoryResetDisabled": true,
    "systemUpdate": {
        "type": "WINDOWED",
        "startMinutes": 0,
        "endMinutes": 240,
        "freezePeriods": [
            {
                "startDate": {"month": 8,"day": 1},
                "endDate": {"month": 9,"day": 30}
            }
        ]
    },
    "applications": [
        {
            "packageName": "com.xxx.yyy",
            "installType": "KIOSK",
            "defaultPermissionPolicy": "GRANT",
            "autoUpdateMode": "AUTO_UPDATE_DEFAULT"
        }
    ],
    "funDisabled": true,
    "appAutoUpdatePolicy": "WIFI_ONLY",
    "kioskCustomization": {
        "statusBar": "NOTIFICATIONS_AND_SYSTEM_INFO_ENABLED",
        "deviceSettings": "SETTINGS_ACCESS_ALLOWED",
        "systemNavigation": "HOME_BUTTON_ONLY"
    },
    "tetheringConfigDisabled": true,
    "mobileNetworksConfigDisabled": false,
    "advancedSecurityOverrides": {
        "developerSettings": "DEVELOPER_SETTINGS_ALLOWED"
    }   ,
    "maximumTimeToLock": 0,
    "keyguardDisabled": true,
    "keyguardDisabledFeatures": "ALL_FEATURES"
}

看起来这个问题与以下问题相似:

  1. Android 11 - Kiosk Mode Lock Screen NFC Issue
  2. Android 10 NFC App - Stops working when phone sleeps while in MS Intune Kiosk Mode

不幸的是,提出的解决方案对我的应用程序不起作用。

有没有人能推荐一种解决方案或者是否有人遇到了同样的问题?

2个回答

1

我在运行Android 12的iGET BV5200上遇到了同样的问题。在设备配置完成后,默认情况下屏幕锁定设置为“滑动”。尽管我的kiosk应用程序设置了设备策略以禁用键盘保护,并且Android设置显示未设置屏幕锁定,但滑动锁定位于我的应用程序下,在我从睡眠中唤醒设备后阻止了NFC读取。我已经找到解决此问题的关键是允许Lock Task模式下的键盘保护。

我找到了两个解决方案/解决方法:

  1. 在设备策略和Lock Task模式下允许键盘保护,并在Android设置中手动设置屏幕锁定为“无”。

    devicePolicyManager.setKeyguardDisabled(adminComponentName, false); devicePolicyManager.setLockTaskFeatures(adminComponentName, LOCK_TASK_FEATURE_KEYGUARD | LOCK_TASK_FEATURE_GLOBAL_ACTIONS);

  2. 在设备策略中禁用键盘保护,但在Lock Task模式下启用键盘保护功能。在这种情况下,我不必更改Android设置中的屏幕锁定,但键盘保护会被禁用。

    this.devicePolicyManager.setKeyguardDisabled(this.adminComponentName, true); this.devicePolicyManager.setLockTaskFeatures(this.adminComponentName, LOCK_TASK_FEATURE_KEYGUARD | LOCK_TASK_FEATURE_GLOBAL_ACTIONS);


谢谢,第二个解决方法实际上对我起了作用。 - manoellribeiro

0
感谢您提出这个问题。经过审核,我们发现您报告的问题正在进行一项活动的内部调查,并且目前正在与Google工程师进行审查。我们已将您提供的详细信息作为调查的一部分传递。此外,公共错误已被创建以跟踪此问题。请关注该线程以获取更新。

谢谢更新,@Danica。不幸的是,我没有谷歌账户无法打开该链接。是否有公共链接可用? - Johan Ferreira
1
在这里找到了公共错误:https://issuetracker.google.com/issues/195910688 - Kevin
很不幸,这个错误似乎从2021年8月开始存在,目前还没有关于何时修复的更新... - Johan Ferreira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接