方法一:重写onBackPressed方法
@Override
public void onBackPressed() {
// do something what you want
super.onBackPressed();
}
方法二:重写dispatchKeyEvent
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
//do something what you want
return true;//返回true,把事件消费掉,不会继续调用onBackPressed
}
return super.dispatchKeyEvent(event);
}
方法三:使用测试框架Instrumentation,模拟任意键按下动作,注意的是该方法不能在主线程中使用,只能开启新线程,带来的问题就是反应速度较慢,项目中不建议使用。
调用actionKey(KeyEvent.KEYCODE_BACK);产生back键单击效果
/**
* 模拟键盘事件方法
* @param keyCode
*/
public void actionKey(final int keyCode) {
new Thread () {
public void run () {
try {
Instrumentation inst=new Instrumentation();
inst.sendKeyDownUpSync(keyCode);
} catch(Exception e) {
e.printStackTrace(); }
}
}.start();
}