Android中障蔽返回键,HOME键以及模拟HOME键返回效果的方法

Android中屏蔽返回键,HOME键以及模拟HOME键返回效果的方法

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