android 默认锁屏界面没有紧急呼救入口如何解决
2015-09-09 15:10
621 查看
android版本为5.1
Keyguard和SystemUI模块都在frameworks/base/packages目录下面
Keyguard模块里面并没有activity关键字
那么锁屏界面是如何而来的了
Keyguard的启动是从WindowManagerService的systemReady开始的
之后调用的是PhoneWindowManager(是WindowManagerPolicy的子类)的systemReady方法
再调用KeyguardServiceDelegate的onSystemReady方法
再调用KeyguardServiceWrapper的onSystemReady方法
再调用KeyguardService内部类的onSystemReady方法
再调用KeyguardViewMediator的onSystemReady方法
进入到KeyguardViewMediator的onSystemReady方法里面
看到有一个方法doKeyguardLocked(null),
进入里面看到有个方法showLocked(options).
进入到showLocked方法里面
里面有 Message msg = mHandler.obtainMessage(SHOW, options);
mHandler.sendMessage(msg);
找到handleMessage
switch (msg.what) {
case SHOW:
handleShow((Bundle) msg.obj);
break;
...
}
进入到handleShow方法里面
里面有 mStatusBarKeyguardViewManager.show(options);
进入到StatusBarKeyguardViewManager里面的show方法
里面有mStatusBarWindowManager.setKeyguardShowing(true);
然后就绘制出了锁屏界面
其实紧急呼救入口没有只是因为代码里有个开关将他关闭了
我们只需要找到相应的位置将他打开就可以了
在keyguard模块中我们找到了类EmergencyButton,他是一个Button
这个类里面定义这个button的信息,和一些跳转
IEmergencyButtonExt是一个接口,它是EmergencyButton客制化的操作者
里面有一个抽象方法showEccInNonSecureUnlock,它是用来控制我们是否应该
将EmergencyButton显示出来
然后找到了这个接口的实现类DefaultEmergencyButtonExt
直接在他重写的方法里面将return false改为return true就可以了
在编译时需要注意,要先编译Keyguard模块,然后再编译SystemUI模块,
因为SystemUI在编译时用到了Keyguard的jar包
编译完之后,将SystemUI.apk push到手机中就可以看到
锁屏界面出现了紧急呼救的按钮
Keyguard和SystemUI模块都在frameworks/base/packages目录下面
Keyguard模块里面并没有activity关键字
那么锁屏界面是如何而来的了
Keyguard的启动是从WindowManagerService的systemReady开始的
之后调用的是PhoneWindowManager(是WindowManagerPolicy的子类)的systemReady方法
再调用KeyguardServiceDelegate的onSystemReady方法
再调用KeyguardServiceWrapper的onSystemReady方法
再调用KeyguardService内部类的onSystemReady方法
再调用KeyguardViewMediator的onSystemReady方法
进入到KeyguardViewMediator的onSystemReady方法里面
看到有一个方法doKeyguardLocked(null),
进入里面看到有个方法showLocked(options).
进入到showLocked方法里面
里面有 Message msg = mHandler.obtainMessage(SHOW, options);
mHandler.sendMessage(msg);
找到handleMessage
switch (msg.what) {
case SHOW:
handleShow((Bundle) msg.obj);
break;
...
}
进入到handleShow方法里面
里面有 mStatusBarKeyguardViewManager.show(options);
进入到StatusBarKeyguardViewManager里面的show方法
里面有mStatusBarWindowManager.setKeyguardShowing(true);
然后就绘制出了锁屏界面
其实紧急呼救入口没有只是因为代码里有个开关将他关闭了
我们只需要找到相应的位置将他打开就可以了
在keyguard模块中我们找到了类EmergencyButton,他是一个Button
这个类里面定义这个button的信息,和一些跳转
IEmergencyButtonExt是一个接口,它是EmergencyButton客制化的操作者
里面有一个抽象方法showEccInNonSecureUnlock,它是用来控制我们是否应该
将EmergencyButton显示出来
然后找到了这个接口的实现类DefaultEmergencyButtonExt
直接在他重写的方法里面将return false改为return true就可以了
在编译时需要注意,要先编译Keyguard模块,然后再编译SystemUI模块,
因为SystemUI在编译时用到了Keyguard的jar包
编译完之后,将SystemUI.apk push到手机中就可以看到
锁屏界面出现了紧急呼救的按钮
相关文章推荐
- Android多线程编程(异步通信)--->Handler和AsyncTask
- Android进阶之读取手机联系人显示listview并点击拨号(CursorAdapter)
- android L平台增加来电翻转静音菜单、功能
- 圆形头像设置Android 原代码
- Android Handler简单使用
- Android短信息验证码自动填写详细介绍
- 日历算法Android
- Android学习——五种布局方式
- Android免Root无侵入AOP框架Dexposed
- android 权限大全
- Android免Root无侵入AOP框架Dexposed
- Mac 下安装使用Android Studio
- 【整理】Android中的USB中的UsbAccessory和UsbDevice的区别
- Android之自定义ContentProvider详解
- [Android Studio 权威教程]配置出“NB”的Android Studio
- Android 技术总结(004)—— ScrollView中的组件设置android:layout_height="fill_parent"不起作用的解决办法
- Android的onLayout、layout方法讲解
- android坐标
- Android第四十七期 - WheelView沉浸式菜单栏
- Android第四十七期 - WheelView沉浸式菜单栏