当前位置: 代码迷 >> Android >> 擒获android中的Home key
  详细解决方案

擒获android中的Home key

热度:49   发布时间:2016-05-01 16:27:17.0
捕获android中的Home key
一 .覆盖 dispatchKeyEvent
dispatchKeyEvent(KeyEvent e) 返回值为 true则点击“返回” 按键的时候不销毁当前Activity。可以进行其他操作
public boolean dispatchKeyEvent(KeyEvent e) {        if (e.getKeyCode() == KeyEvent.KEYCODE_BACK && e.getAction() == KeyEvent.ACTION_UP)            {                            this.onClick(null);            }        return true;    }public void onClick(View v) {        if (isok != 1) {            // Toast.makeText(this, "正在取消 ...", Toast.LENGTH_SHORT).show();            SynDataProgressAct.getdefault().tmer.cancel();            sync.getdefault().SetCancle();            this.sendMessage(2, sync.getdefault().STRING_C_CANCELING);        } else {            this.finish();        }    }


二 覆盖onKeyDown

在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK )就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。

我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy() 里强制退出应用,或直接杀死进程,具体操作代码如下:

//捕获按下键盘上返回按钮
   @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            new AlertDialog.Builder(this)                    // .setIcon(R.drawable.services)                    .setTitle(R.string.prompt)                    .setMessage(R.string.quit_msg)                    .setNegativeButton(R.string.cancel,                            new DialogInterface.OnClickListener() {                                @Override                                public void onClick(DialogInterface dialog,                                        int which) {                                }                            })                    .setPositiveButton(R.string.confirm,                            new DialogInterface.OnClickListener() {                                public void onClick(DialogInterface dialog,                                        int whichButton) {                                    finish();                                }                            }).show();            return true;        } else {            return super.onKeyDown(keyCode, event);        }    }    //彻底退出程序    @Override    protected void onDestroy() {        super.onDestroy();        System.exit(0);        // 或者下面这种方式        // android.os.Process.killProcess(android.os.Process.myPid());    }
1 楼 bingtao115 2011-10-25  
大哥你的捕捉home key方法在哪呢?
  相关解决方案