一般来说我们会在某些时候对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();
这个时候,我们可以选择修改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);
- }