打开
/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
1、查找到 public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,
int policyFlags)方法,在switch里面处理相应键值。
2、增加SystemProperties: persist.sys.back、persist.sys.home,通过系统属性切换,禁用、放开HOME键、返回键。
@Override
public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,
int policyFlags) {
.............................
final long key_consumed = -1;
final long key_not_consumed = 0;
................................
switch(keyCode) {
//add code KEYCODE_BACK
case KeyEvent.KEYCODE_BACK:
if(!SystemProperties.getBoolean("persist.sys.back",false)){
Log.d(TAG,"forbiden interceptKeyBeforeDispatching back");
return key_consumed;
}
break;
//add end
case KeyEvent.KEYCODE_HOME:
// First we always handle the home key here, so applications
// can never break it, although if keyguard is on, we do let
// it handle it, because that gives us the correct 5 second
// timeout.
//add code KEYCODE_HOME
if(!SystemProperties.getBoolean("persist.sys.home",false)){
Log.e(TAG,"forbiden interceptKeyBeforeDispatching home");
return key_consumed;
}
//add end
DisplayHomeButtonHandler handler = mDisplayHomeButtonHandlers.get(displayId);
if (handler == null) {
handler = new DisplayHomeButtonHandler(displayId);
mDisplayHomeButtonHandlers.put(displayId, handler);
}
return handler.handleHomeButton(focusedToken, event);
....................
}
.....................
}