以编程方式唤醒设备

时间:2016-10-26 10:26:22

标签: android android-4.4-kitkat unlock

我想要唤醒并解锁设备。然后,当用户收到来自Firebase的新消息时,我想展示一项活动。

我在onResume()方法上写了这个:

window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

这适用于具有API>的设备19.问题在于KitKat,它既不会做任何事情,也不会唤醒屏幕,但不会解锁设备。

我也在AndroidManifest.xml

中设置了正确的权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

同样在MyFirebaseMessagingService.class中,我正在以FLAG_ACTIVITY_NEW_TASK为标志开始活动。

有谁知道我错过了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

好的,我找到了。我只是添加了那段代码,它就可以了。

KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard();