在Android開發中,有時需要屏蔽一些實體的按鍵,如HOME鍵,返回鍵等實體的按鍵,實現的方法如下。
1. 屏蔽實體按鍵
屏蔽實體按鍵(HOME鍵有些特別,需要單獨去分析)
switch (keyCode) {case KeyEvent.KEYCODE_HOME:return true;case KeyEvent.KEYCODE_BACK:return true;case KeyEvent.KEYCODE_CALL:return true;case KeyEvent.KEYCODE_SYM:return true;case KeyEvent.KEYCODE_VOLUME_DOWN:return true;case KeyEvent.KEYCODE_VOLUME_UP:return true;case KeyEvent.KEYCODE_STAR:return true;default:break;}
屏蔽HOME鍵
@Overridepublic void onAttachedToWindow() {// TODO Auto-generated method stubthis.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);super.onAttachedToWindow();}
2. 在有些應用中我們希望退出這個介面之後程式仍舊在運行,說白了就是類比HOME鍵的功能,其實現代碼如下
View.OnClickListener btnHomeListener = new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(Intent.ACTION_MAIN);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 注意intent.addCategory(Intent.CATEGORY_HOME);startActivity(intent);// finish();}};
特別注意 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 這句,一定要加上,因為Activity 的 launchMode 預設是以 standard 執行的,如果不添加這個標記則 會建立新的Activity 並放在與當前Activity相同的Task中。