【发布时间】:2013-09-30 12:07:09
【问题描述】:
我想实现一个服务,在连接到某个 WiFi 网络时禁用键盘锁,并在断开连接时恢复键盘锁。
在我的 Galaxy Nexus (CM10) 和 HTC Desire (MIUI) 上,我尝试了以下解决方案,但都没有奏效:
- 尝试在服务内部使用 disableKeyguard() 和 reenableKeyguard()。问题是它一开始禁用了键盘保护,但是当我打开另一个应用程序并按主页时,我突然得到了键盘保护。在那之后,它根本不起作用。此外,这些函数已被弃用。
- 我构建了一个新活动,我使用 new_task 标志从我的服务内部开始。我给了它以下操作之一:showkeyguard 和 hidekeyguard。因此,我使用 getWindow().addFlags() 来设置 FLAG_DISMISS_KEYGUARD 或 FLAG_SHOW_WHEN_LOCKED。问题是活动出现并且必须保持可见。
任何人都可以建议从服务中执行此操作的方法吗?如果第一个解决方案是从服务中做到这一点的唯一方法,那么我不介意那些已弃用的东西。我想知道它为什么会这样?
谢谢。
【问题讨论】:
-
第一次试用后方法 1 不起作用的原因是我没有重新启用键盘保护。我现在正在做的是在 screen_on 上禁用键盘保护并在 screen_off 上重新启用它。但是当我按下主页键时,我仍然面临键盘保护再次出现的问题(在每个 screen_on/screen_off 循环中只有一次)。
-
你让这个东西工作了吗?我在服务中也遇到了 Keyguard 的一些问题。
-
@MarkySmarky 有疑问。在第一个 screen_on 之后,我保持启用键盘保护。当用户关闭键盘保护时,Android 广播 ACTION_USER_PRESENT。那时我禁用键盘保护并保持禁用状态,直到我想再次启用它(不一定在 screen_off 上)。这仅适用于某些设备。老实说,我建议不要对键卫做任何事情。
标签: android service dismiss keyguard