Android系统开发中添加系统后门键

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;
		}		
			
	}

 如上就是相关的处理代码了,而代码中的发送广播就是通过广播来启动我们的升级流程了。 

总结:

     至于其它后门键的添加,也可以按照我上面的作为参照,原理是相同的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值