前言

Home键和BACKAndroid中最实用的,因此本文就简单的介绍一下监听HOME和BACK键。

好记性不如烂笔头

正文

由于Android的管控越来越严格,HOME键已经无法拦截,但可以监听,BACK键的监听和拦截都可以。

监听HOME键

目前监听HOME的按键,可以监听:

public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";

看命名就知道,这个触发用来关闭Dialog的。

直接上怎么监听。

    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (null == intent || null == intent.getAction()) {
                return;
            }
            String action = intent.getAction();
            if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
                String reason = intent.getStringExtra("reason");
                if (!TextUtils.isEmpty(reason) && reason.equals("homekey")) {
                // home
                }
            }
        }
    };

PS: 上面这个广播还可以监听多任务键(recentapps),我这就不附上了。

监听BACK键

至于BACK键的拦截和监听,这个就比较多了。

重写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);
}
重写onBackPressed方法
@Override
public void onBackPressed() {
    // 注意:仅适用于2.0或更新版的sdk版本
    return;
}

项目中比较常用的就重写onBackPressed()。

参考文章

  1. android监听Home键
  2. Android之Back键和HOME键拦截处理

相关文章

暂无评论

none
暂无评论...