在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中。