判断是否锁屏
KM.isKeyguardLocked()
是否锁屏。不管有没有设置密码
KM.isDeviceLocked()
手机锁屏,且需要密码才能解锁
KM.isKeyguardSecure()
如果锁屏,需要密码(比isDeviceSecure 多了个sim锁)才能解锁。此时也可以没锁屏
KM.isDeviceSecure()
如果锁屏,需要密码才能解锁。此时可以没锁屏。
解锁
KeyguardManager.KeyguardLock.disableKeyguard()
描述:
KeygaurdLock 只有2个方法:
- disableKeyguard()
- reenableKeyguard()
注释里的信息:
- 推荐用 LayoutParams.flag_dismiss_keyguard 代替
- 推荐在onResume时调用
- 锁屏且没有密码时,才会解锁;有密码,啥都不干
- reenableKeyguard() 重新锁屏生效前提是,解锁是用disableKeyguard() 触发的
LayoutParams.flag_dismiss_keyguard
描述
- 锁屏且没有密码时,才会解锁
- 解锁后,切换到其他没有设置flag的window时,会继续解锁。(flag_show_when_locked ,切换到其他window时就锁屏了)
- 推荐用 flag_show_when_locked 或者 KeyguardManager.requestDismissKeyguard() 代替
LayoutParams.flag_show_when_locked
描述
- 让 window 在锁屏时可以显示,让 window 的显示层级高于锁屏的层级
- 配合 flag_keep_screen_on 使用,让window显示在锁屏界面之上
- 配合 flag_dismiss_keyguard 使用,可以打开 非密码锁屏
- 只适用于全屏window
- 推荐使用 Activity.setShowWhenLocked(boolean) 代替
KeyguardManager.requestDismissKeyguard()
描述
- 没有密码时,直接进入
- 有密码时,进入密码输入界面
- 配合 Activity.setTurnScreenOn(boolean),可以亮屏
- 需要show_keyguard_message 权限。且是hide方法
Activity.setShowWhenLocked()
描述
- 显示在锁屏层级之上
- 正常app 在锁屏后会进入onStop()。但设置此标记后,锁屏后依然在onResume。