屏蔽键重写activiy的两个方法就行
屏蔽返回键
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
return true;
}
return super.onKeyDown(keyCode, event);
}
屏蔽home键和别的键不一样
publicvoid onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
屏蔽其他实体按键
public boolean onKeyDown(int keyCode, KeyEvent event) {
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;
}
}
屏蔽home键后全屏消失,说明你是在代码中设置全屏的,转到AndroidManifest.xml设置全屏就行
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>
Dialog 如果在Activity弹出dialog,在Activity设置以上2个方法是没办法屏蔽的。
其实,原理是一样的,只是地方不一样而已。
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.mydailog);
dialog.show(); //show应在setType之前,否则报错
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
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;
}
});
getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
背景为黑色
getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
背景为透明