以编程方式唤醒设备

Wake up device programmatically

我想唤醒并解锁设备。然后,当用户收到来自 Firebase 的新消息时,我想显示一个 activity。

我在 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 中,我开始 activity 并以 FLAG_ACTIVITY_NEW_TASK 作为标志。

有人知道我错过了什么吗?

感谢您的帮助。

好的,我找到了。我只是添加了那段代码,它起作用了

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