如何在触发SCREEN_ON接收器时禁用Keyguard并向用户显示活动?

时间:2010-11-20 18:01:30

标签: android keyguard

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

我一直在尝试从屏幕关闭触发的广播接收器中获取以下代码...

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

虽然它似乎并没有起作用。当我打开屏幕时,我仍然需要手动解锁手机上的键盘锁,以显示其背后的活动。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

我想我弄清楚我做错了什么。在使用disable_keyguard权限时,我的清单中似乎只是标签错误。现在我纠正了清单,它正常工作。

答案 2 :(得分:1)

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

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

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