1

我试图让我的应用程序在经过 x 时间后重新启用键盘保护(使用警报管理器)。基本上,这就是我所做的:

假设我将屏幕锁定设置为在 5 分钟后启用。

  1. 我的应用程序启动并且我禁用了键盘保护 - 效果很好!
  2. 我创建了一个计时器(使用警报管理器)在 3 分钟后锁定屏幕,我在日志中看到警报在 3 分钟后响起,并且重新启用键盘保护的代码开始启动。5 分钟后屏幕熄灭,我单击电源按钮并启用键盘保护 - 效果很好!基本上,只要在屏幕打开时完成所有操作,一切都会正常工作。

现在假设我们保持与上面相同的场景,但将步骤 2 更改为:

  1. 和上面一样
  2. 我创建了一个计时器(使用警报管理器)在 10 分钟后锁定屏幕。屏幕在 5 分钟后熄灭,我仍然在日志中看到警报在 10 分钟后正确响起并重新启用键盘保护。但是,当我在那之后点击电源按钮时,我仍然可以进入应用程序而不会遇到锁定屏幕。如果我单击电源按钮或等待屏幕再次关闭,那么我将遇到锁定屏幕。

这似乎向我表明,重新启用键盘保护仅在屏幕再次亮起后才会生效,并且在屏幕关闭时您无法启用它。我错了还是有其他方法可以解决这个问题?即使代码在屏幕关闭时重新启用锁定保护,我也希望能够将用户踢回锁定屏幕。

谢谢!

4

1 回答 1

0

答案是使用:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, this.getClass().getSimpleName());
wl.acquire();

在重新启用键盘保护之前

于 2014-06-15T22:56:24.730 回答