在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键
@Override
public void onAttachedToWindow() {
// TODO Auto-generated method stub
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
2. 在有些应用中我们希望退出这个界面之后程序仍旧在运行,说白了就是模拟HOME键的功能,其实现代码如下
View.OnClickListener btnHomeListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent 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中。