在/frameworks//base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java文件中添加你需要处理的系统键值,
这是因为Android的系统键值在抛向应用层之间都是在该类中的interceptKeyBeforeQueueing被处理的。代码实现如下:
//变量声明并初始化
private int mBackDoorCurIndex = 0;
private long mBackDoorStartTime = 0;
//控制按键时间间隔在2s之内
private final int mBACKDOORTIME = 2000;
//将后门暗号存在数组里面,这里暗号是0752
private final int[] mBackDoorKeys = {KeyEvent.KEYCODE_0,KeyEvent.KEYCODE_7,KeyEvent.KEYCODE_5,KeyEvent.KEYCODE_2};
//在interceptKeyBeforeQueueing中的if(down)中添加如下代码
if(keyCode != mBackDoorKeys[mBackDoorCurIndex]){
if(0 != mBackDoorCurIndex)
mBackDoorCurIndex = 0;
return;
}
if(0 == mBackDoorCurIndex)
{
mBackDoorStartTime = SystemClock.uptimeMillis();
mBackDoorCurIndex++;
return;
}
//超过设置的时间间隔
if(SystemClock.uptimeMillis() - mBackDoorStartTime > mBACKDOORTIME) {
mBackDoorCurIndex = 0;
return;
}
mBackDoorCurIndex++;
if(mBackDoorKeys.length <= mBackDoorCurIndex){
if(mBackDoorKeys.length == mBackDoorCurIndex){
//对上暗号的处理程序
}
mBackDoorCurIndex = 0;
}
这是因为Android的系统键值在抛向应用层之间都是在该类中的interceptKeyBeforeQueueing被处理的。代码实现如下:
//变量声明并初始化
private int mBackDoorCurIndex = 0;
private long mBackDoorStartTime = 0;
//控制按键时间间隔在2s之内
private final int mBACKDOORTIME = 2000;
//将后门暗号存在数组里面,这里暗号是0752
private final int[] mBackDoorKeys = {KeyEvent.KEYCODE_0,KeyEvent.KEYCODE_7,KeyEvent.KEYCODE_5,KeyEvent.KEYCODE_2};
//在interceptKeyBeforeQueueing中的if(down)中添加如下代码
if(keyCode != mBackDoorKeys[mBackDoorCurIndex]){
if(0 != mBackDoorCurIndex)
mBackDoorCurIndex = 0;
return;
}
if(0 == mBackDoorCurIndex)
{
mBackDoorStartTime = SystemClock.uptimeMillis();
mBackDoorCurIndex++;
return;
}
//超过设置的时间间隔
if(SystemClock.uptimeMillis() - mBackDoorStartTime > mBACKDOORTIME) {
mBackDoorCurIndex = 0;
return;
}
mBackDoorCurIndex++;
if(mBackDoorKeys.length <= mBackDoorCurIndex){
if(mBackDoorKeys.length == mBackDoorCurIndex){
//对上暗号的处理程序
}
mBackDoorCurIndex = 0;
}