一般來說我們會在某些時候對home back和power鍵進行屏蔽,比如說原廠模式
這個時候,我們可以選擇修改WindowsManagerService.java這個類,在相關的地方進行下屏蔽,這裡需要針對當前啟動並執行是某個特殊應用的時候才給予屏蔽。
如果說是對home鍵進行屏蔽,我們可以在應用的代碼中加入語句:
public void onAttachedToWindow() {
// TODO Auto-generated method stub
//注意是TYPE_KEYGUARD_DIALOG而不是TYPE_KEYGUARD,可以屏蔽home鍵
this.getWindow().setType(
WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onAttachedToWindow();
}即可
android 屏蔽按鍵
- UiModeManager uiModeManager = (UiModeManager )getSystemService(Context.UI_MODE_SERVICE);
-
- if(uiModeManager.getCurrentModeType()==UiModeManager.DISABLE_CAR_MODE_GO_HOME){
- uiModeManager.enableCarMode(UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME);
- flag = true;
- return;
- }
public boolean dispatchKeyEvent (KeyEvent event)
Since: API Level 1
Called to process key events. You can override this to intercept all key events before they are dispatched to the window. Be sure to call this implementation for key events that should be handled normally.
Parameters
event
- @Override
- public boolean dispatchKeyEvent(KeyEvent event)
- {
- switch (event.getKeyCode()){
- case KeyEvent.KEYCODE_VOLUME_UP: //音量鍵+
- case KeyEvent.KEYCODE_VOLUME_DOWN: //音量鍵-
- case KeyEvent.KEYCODE_CAMERA: //拍照鍵
- case KeyEvent.KEYCODE_HOME: //拍HOME鍵
- return true; //這些標記為處理過,則不在往內部傳遞
- default:
- break;
- }
- return super.dispatchKeyEvent(event);
- }