当screen_on激活广播接收器时,如何禁用键盘锁,以便当用户看到我在其后面开始的活动时? (活动已经开始......)
我一直在尝试从屏幕关闭触发的广播接收器中获取以下代码...
KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
myLock = myKeyGuard.newKeyguardLock();
myLock.disableKeyguard();
虽然它似乎并没有起作用。当我打开屏幕时,我仍然需要手动解锁手机上的键盘锁,以显示其背后的活动。
答案 0 :(得分:5)
我建议使用窗口标志dismiss_keyguard或show_when_locked,如果你有一个窗口需要在唤醒时通过锁屏的顶部。
你如何使用它如下(在设置布局之前在onCreate中调用)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
答案 1 :(得分:1)
我想我弄清楚我做错了什么。在使用disable_keyguard权限时,我的清单中似乎只是标签错误。现在我纠正了清单,它正常工作。
答案 2 :(得分:1)
我没有看到Keyguard解决方案的工作(并且已被弃用)。对我有用的是抓住永不释放的永久PARTIAL_WAKE_LOCK
。这可以防止设备真正入睡,从而避免每次激活锁定屏幕。
然后每次屏幕关闭时,我都会收听该通知并将设备唤醒。它适用于我测试过的所有设备。
我意识到这会很快杀死设备的电池,所以,你必须非常谨慎地使用它。