8

如何在 screen_on 激活广播接收器时禁用键盘保护,以便当它发生时用户看到我在它后面启动的活动?(活动已经开始......)

我一直在尝试来自屏幕关闭触发的广播接收器的以下代码...

KeyguardManager  myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
myLock = myKeyGuard.newKeyguardLock();
myLock.disableKeyguard();

它似乎并没有按原样工作。当我打开屏幕时,我仍然需要手动解锁手机上的键盘锁才能显示其背后的活动。

4

3 回答 3

5

我建议使用窗口标志dismiss_keyguard 或show_when_locked,如果您有一个需要在唤醒时越过锁屏顶部的窗口。

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SHOW_WHEN_LOCKED

你如何使用它如下(在设置布局之前在 onCreate 中调用)

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
于 2011-02-13T06:24:21.263 回答
1

我想我知道我做错了什么。使用 disable_keyguard 权限时,这似乎只是我清单中的一个标签错误。现在我更正了清单,它工作正常。

于 2010-11-23T14:12:08.560 回答
1

我没有看到 Keyguard 解决方案有效(并且已被弃用)。对我有用的是抓住一个PARTIAL_WAKE_LOCK 我永远不会释放的永久物。这可以防止设备真正入睡,从而避免每次激活锁屏。

然后每次屏幕关闭时,我都会收听该通知并重新唤醒设备。它适用于我测试过的所有设备。

我意识到这会很快耗尽设备的电池,所以,你必须非常谨慎地使用它。

于 2014-03-28T00:31:33.407 回答