以编程方式唤醒设备
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();
我想唤醒并解锁设备。然后,当用户收到来自 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();