//在Activity中: @Override public void onAttachedToWindow() { // TODO Auto-generated method stub if(catchHomeKey) { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); } super.onAttachedToWindow(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_HOME) { Log.e(TAG, "Home key down"); } return super.onKeyDown(keyCode, event); } // 在Dialog中: final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.mydailog); // 下面两句顺序不能倒置 dialog.show(); dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); dialog.setOnKeyListener(new android.content.DialogInterface.OnKeyListener(){ @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_HOME: Log.i(TAG, "KEYCODE_HOME"); return true; } return false;}}