1. 程式人生 > >android Home鍵監聽

android Home鍵監聽

最近的專案需要做Home鍵監聽,網上查閱了很多資料,感謝那些無私奉獻的猿們,下面我就總結下我是如何實現Home鍵監聽的。

android系統:2.3.3

首先在需要監聽home鍵的activity中重寫onAttachedToWindow方法:

	@Override
	public void onAttachedToWindow() {
		this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
		super.onAttachedToWindow();
		Log.e(null, "===onAttachedToWindow===");
	}

其次重寫onKeyDown方法:
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		
		switch (keyCode) {
		case KeyEvent.KEYCODE_HOME:
			Log.e(null, "onKeyDown-Home");
			break;
			

		default:
			break;
		}
		
		return super.onKeyDown(keyCode, event);
	}

遮蔽 Dialog風格Activity的Home鍵功能,也需要在你要遮蔽的activity 中重寫 onAttachToWindow() 這個函式,但設定window 的值需要改變為 TYPE_KEYGUARD_DIALOG

  @Override
  public void onAttachedToWindow() {
  this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
  super.onAttachedToWindow();
  }

遮蔽AlertDialog的Home鍵功能

  AlertDialog d = b.create();
  d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
  AlertDialog d = b.create();
  d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);


這時候在當前activity中就成功監聽了home,我的系統是原生2.3.3,不知道其它系統中使用會有什麼樣的結果...

android的home應用,可以在AndroidManifest.xml檔案中宣告:

<category android:name="android.intent.category.HOME"/>