方法一:重写onBackPressed方法
- public void onBackPressed() {
- // do something what you want
- super.onBackPressed();
- }
@Override
public void onBackPressed() {
// do something what you want
super.onBackPressed();
}
方法二:重写dispatchKeyEvent
- 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);
- }
@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();
- }