【问题标题】:Disabling Android keyguard from a service从服务中禁用 Android 键盘保护
【发布时间】: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


【解决方案1】:

你试过在服务启动时禁用keyguard,在服务销毁时启用keyguard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2014-03-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多