灭屏后亮屏没有看到锁屏可参考如下方法分析。(mtk 文档上面总结的方法)
google默认设计:
(1)timeout灭屏(手机休眠时间到)时,不会立即锁屏,默认会等待5s才会上锁,5s内亮屏是不会看到有锁屏的。
(2)按电源键灭屏时, 如果没有勾选“按电源键立即锁屏”菜单,默认也会等待5s才上锁,5s内亮屏不会看到锁屏。
(3)keyguard被三方app disable掉了,所以灭屏不会上锁,亮屏不会看到锁屏。可从如下log中mExternallyEnabled的值为false表示keyguard是被三方app disable掉了。
一般就是上面3种原因.
11-27 08:49:43.505 1196 3408 D KeyguardViewMediator: doKeyguard :
externally disabled reason..mExternallyEnabled = false
对于第三种原因引起的灭屏后亮屏没有看到锁屏,建议贵司接受这种设计,三方app是使用了KeyguardManager.java中提供的disableKeyguard()方法将锁屏disable掉了,这个接口目前google已不建议使用了。
如果坚持想要修改成三方app disable后不生效,可以参考下面两种方法:
(1)将KeyguardManager.java中disableKeyguard()和reenablekeyguard()方法直接return.(由于这是google提供的接口,所以不建议使用)
(2)将KeyguardViewMediator.java中使用到mExternallyEnabled这个变量的地方都把它的值当true使用。
其中关于第3种原因的具体调用流程:
KeyguardManager.disableKeyguard() -> WindowManagerService.disableKeyguard() -> KeyguardDisableHandler$KeyguardTokenWatcher.acquired()->
PhoneWindowManager.enableKeyguard()-> KeyguardServiceDelegate.setKeyguardEnabled()->
KeyguardServiceWrapper.setKeyguardEnabled()->KeyguardService.setKeyguardEnabled() ->
KeyguardViewMediator.setKeyguardEnabled()