Android 4.4永不锁屏 HOME键不响应

andoird 4.4的代码于以前的有了很大的改变,导致以前的一些修改在android 4.4上会出现一些问题,如禁止系统休息和永不锁屏。永不休眠按照以前的修改在android4.4源码上是不起作用的,以前一篇文章介绍了android4.4上永不休眠的方法。这里就不在讲了,主要讲一下让系统永不锁屏这个问题。

android4.2以前的让系统永不锁屏,之需要修改KeyguardViewMediator.java文件里的mExternallyEnabled的值为false就可以实现系统永不锁屏的效果了,但是在android4.4的代码里这样修改,可以达到永不锁屏,但是导致一些问题,而且KeyguardViewMediator.java文件所在的目录也和android4.2以及以前的版本都不一样,这样修改后出现的问题如:系统异常关机,用reboot 命令重启系统,或直接拔掉电源,再起系统,那么这时home键会失效,你点击home键是无法回到主界面,而且在导航栏中menu键会消失,这时你运行android系统的Browser浏览器应用,这时这个应用是无法运行起来的,出现这个问题的原因就是因为锁屏引起的,当系统开机时在执行doKeyguardLocked这个函数时遇到mExternallyEnabled这个变量为false,就退出了,就不走锁屏函数了,这也就导致了home键这些问题的出现,这是因为android4.4代码的改变而引起的。而且引起这个的问题的地方在我的代码里有很多的地方,也就是说可以修改很多地方来到达锁屏的目的但也不会引起home键失效的问题,这里我就不把修改的方法都一一列出来了,因为我的代码可能与你们的不同,所以我修改的地方可能你们的代码并不存在。那么教大家一个简单暴力的方法。只修改mExternallyEnabled变量所在的同一个文件就可以了。

修改方法:

打开KeyguardViewMediator.java文件,这个文件android4.4代码里在frameworks/base/packages/Keyguard/src/com/android/keyguard/这个目录下

第一步、还是修改mExternallyEnabled变量,同样将它的值该为false。

第二步、找到mShowing这个变量定义的地方,android4.4对这个变量没有赋初值,我们给这个变量赋初值为false。

第三步、找KeyguardViewMediator这个类的构造函数,在这个构造函数里有对mShowing这个变量赋值,我们将其注释掉。

第四步、最后一步,找Handler的处理程序函数handleMessage(),将这个函数里的case SHOW:分支下的handleShow函数注释掉,不让走这个函数。

通过这四步就可以到达永不锁屏而且home也不会失效,android本身的Browser浏览器可以正常启动了。但这样修改不是一个安全的方法。可能也会引起别的问题。但这应该是一个最通用的方法。如果有按照这样修改导致别的bug,请列出来一起在解决。

你可能感兴趣的:(Android)