Android系统开发中添加系统后门键
2015-02-10 15:19
501 查看
Android系统开发中添加系统后门键
在我平常的开发中经常会遇到这样的情况出现,那就是需要进行系统升级来验证对系统层面的修改是否成功,一般的情况下都是通过串口工具输入命令来进行的。但是这种方式也是有弊端的,因为在正式出货的产品中我们通常是把adb和窜口等功能关闭了。那么在这种情况下就必须预置一些系统级的后门键了。下面就是我平时开发过程中系统后门键的添加,这里以后门升级键添加为例,1.在/frameworks//base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java文件中添加你需要处理的系统键值,这是因为Android的系统键值在抛向应用层之间都是在该类中的interceptKeyBeforeQueueing被处理的。
2.我们的后台升级后门键是在3秒的时间内,先按三下黄健然后再按三下红键,下面就是我的具体处理逻辑代码:
在interceptKeyBeforeQueueing中的if(down)中添加如下处理函数UpgradeKeyJuge(keyCode);,该函数的相关代码如下:
private int mBackDoorCurIndex = 0; private long mBackDoorStartTime = 0; private final int mBACKDOORTIME = 3000; //three times the blue key them three times the red key private final int[] mcBackDoorKeys = {KeyEvent.KEYCODE_PROG_YELLOW,KeyEvent.KEYCODE_PROG_YELLOW,KeyEvent.KEYCODE_PROG_YELLOW,KeyEvent.KEYCODE_PROG_YELLOW,KeyEvent.KEYCODE_PROG_RED,KeyEvent.KEYCODE_PROG_RED,KeyEvent.KEYCODE_PROG_RED,KeyEvent.KEYCODE_PROG_RED};<pre name="code" class="java"> //to route whether there is a sequence of upgrade key private void UpgradeKeyJuge(int keyCode){ //is the waiting key if(keyCode != mcBackDoorKeys[mBackDoorCurIndex]){ if(0 != mBackDoorCurIndex) mBackDoorCurIndex = 0; return; } if(0 == mBackDoorCurIndex) { mBackDoorStartTime = SystemClock.uptimeMillis(); mBackDoorCurIndex++; return; } //timeout if(SystemClock.uptimeMillis() - mBackDoorStartTime > mBACKDOORTIME) { mBackDoorCurIndex = 0; return; } mBackDoorCurIndex++; if(mcBackDoorKeys.length <= mBackDoorCurIndex){ if(mcBackDoorKeys.length == mBackDoorCurIndex){ Intent intent = new Intent("com.coship.upgrade.usbupgrade"); mContext.sendBroadcast(intent); } mBackDoorCurIndex = 0; } }
如上就是相关的处理代码了,而代码中的发送广播就是通过广播来启动我们的升级流程了。
总结:
至于其它后门键的添加,也可以按照我上面的作为参照,原理是相同的。相关文章推荐
- 【Android游戏开发之六】在SurfaceView中添加系统控件,并且相互交互数据!
- Android系统开发之一:添加系统级服务方法
- Android系统开发中添加系统ID的问题
- Android系统开发小知识-在android产品开发中添加新的编译模块
- Android开发-UI控件:为ListView,GirdView,etc...添加系统自带的下拉刷新功能
- Android系统应用开发(四)系统语言以及添加字体库
- Android 开发之系统应用Launcher详解,简单添加和删除快捷方式及常见问题
- 【Android游戏开发之六】在SurfaceView中添加系统控件,并且相互交互数据!
- Android 开发工具学习之 配置构建路径(configure build path)、更改系统库、添加引用的库(Java和Android)
- 【Android游戏开发之六】在SurfaceView中添加系统控件,并且相互交互数据!
- Android系统开发之三:源码添加编译多个第三方jar包
- Android系统开发小知识-在android产品开发中添加新的编译模块
- android系统开发(八)-SDCARD
- Android camera系统开发之总括
- android系统开发(四)-触摸屏tslib移植(内核)和原理分析
- Android camera系统开发之IPC (一)
- android系统开发(七)-背光模块
- 基于xp系统搭建android开发环境
- android系统开发编译过程中的汇编错误
- Windows系统部署 Android 开发环境以及验证之傻瓜式教程(SDK+Eclipse+ADT)