gpt4 book ai didi

java - "Automatically lock after n seconds"时未收到 ACTION_USER_PRESENT

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:32 25 4
gpt4 key购买 nike

因此,我在服务内注册了 ACTION_USER_PRESENTACTION_SCREEN_ONACTION_SCREEN_OFF

IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_USER_PRESENT);
screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, screenStateFilter);

以下是一些情况:

  1. [正确] 用户的“屏幕锁定”= :当我按下电源按钮时,ACTION_SCREEN_ONACTION_SCREEN_OFF 都会收到。

  2. [正确] 用户的“屏幕锁定”= 滑动:当我按下电源按钮时,会显示锁定屏幕并收到 ACTION_SCREEN_ON。解锁后收到ACTION_USER_PRESENT

  3. [正确] 用户的“屏幕锁定”= 图案/PIN/密码 & 自动锁定 = 立即:当我按下电源按钮时,会显示锁定屏幕并收到 ACTION_SCREEN_ON。解锁后收到ACTION_USER_PRESENT

  4. [错误] 用户的“屏幕锁定”= 图案/PIN/密码 & 自动锁定 = 15 秒:当我锁定屏幕并在 15 秒后解锁时,会显示锁定屏幕并收到 ACTION_SCREEN_ON。解锁后收到ACTION_USER_PRESENT但是当我锁定屏幕并在 15 秒之前解锁时,不会显示锁定屏幕(如预期),但仅收到 ACTION_SCREEN_ON 。未收到 ACTION_USER_PRESENT。

那么,如何确保在(用户解锁屏幕)/(屏幕仍处于解锁状态时ACTION_SCREEN_ON)时调用方法。

我已经尝试过

KeyguardManager mKeyguard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if (!mKeyguard.inKeyguardRestrictedInputMode()) {
if (action.equals(Intent.ACTION_SCREEN_ON)) {
// Call method
}
}

if (action.equals(Intent.ACTION_USER_PRESENT)) {
// Call method
}

但在上述 3 种[正确]情况下,该方法将被调用两次。

<小时/>

注意:这是“n秒后自动锁定”的屏幕截图:

image

image

最佳答案

您可以使用KeyGuardManager

监听 ACTION_SCREEN_ON,然后检查设备是否已锁定,如果是,则等待 ACTION_USER_PRESENT,否则立即运行您的代码。

关于java - "Automatically lock after n seconds"时未收到 ACTION_USER_PRESENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38810866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com