Android中对手机的返回键,Home键以及多功能切换键的监听

来源:互联网 发布:淘宝首页轮播图什么样 编辑:程序博客网 时间:2024/06/05 08:58

编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/77045754

实现原理

  返回键的监听通过onKeyDown实现,Home键和多功能切换键的监听通过onKeyDown实现无效,通过BroadcastReceiver实现

代码实现

// BaseActivityimport android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.KeyEvent;public abstract class BaseActivity extends AppCompatActivity {    private IntentFilter mFilter;    private Receiver mReceiver;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(getLayoutId());        initBroadcast();        initView();        initData();    }    protected void initBroadcast(){        mReceiver = new Receiver();        mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);        registerReceiver(mReceiver, mFilter);    }    public abstract int getLayoutId();    public abstract void initView();    public abstract void initData();    /**     * 只监听不拦截返回键     */    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            Log.i("KeyListener" , "返回键按下");            // 是否拦截事件传递//            return true;        }        return super.onKeyDown(keyCode, event);    }    @Override    protected void onDestroy() {        super.onDestroy();        unregisterReceiver(mReceiver);    }}----------------------------------------------------------------------------------------// Receiverimport android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Receiver extends BroadcastReceiver {    private static final String SYSTEM_DIALOG_REASON_KEY = "reason";    private static final String HOME_KEY = "homekey";    private static final String MULTITASKING_TOGGLE_KEY = "recentapps";    @Override    public void onReceive(Context context, Intent intent) {        String action = intent.getAction();        if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {            String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);            if (reason != null) {                if (HOME_KEY.equals(reason)) {                    Log.i("KeyListener" , "Home键按下");                } else if (MULTITASKING_TOGGLE_KEY.equals(reason)) {                    Log.i("KeyListener" , "多功能返回键按下");                }            }        }    }}----------------------------------------------------------------------------------------// MainActivitypublic class MainActivity extends BaseActivity {    @Override    public int getLayoutId() {        return R.layout.activity_main;    }    @Override    public void initView() {    }    @Override    public void initData() {    }}

Demo下载请移步:http://download.csdn.net/download/zxc514257857/9927655


———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-

原创粉丝点击