一、拦截BACK键
一般的应用有两种方法可以获取,当然你也可以修改Framework层代码进行拦截,但这个真的没必要修改。
方法1、重写Activity的onKeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
//do something ...
return true;
}
return super.onKeyDown(keyCode, event);
}
方法2、重写onBackPressed方法
@Override
public void onBackPressed() {
// 注意:仅适用于2.0或更新版的sdk版本
return;
}
既然一般的应用都可以搞定,而且Android给了标志接口,那就不用修改Framework了。
二、拦截HOME
在以前的版本也可以通过重写Activity的onKeyDown方法(跟BACK键一样)进行拦截,但是后面Android把权限收回了。Android 6.0(其他版本忘记了)以后是不可以拦截HOME键的。因此如果你真的要拦截,那只能修改PhoneWindowManager.java做拦截判断了。
@Override
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int
policyFlags) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
//do something ...
}
}
© 版权声明