android Home鍵監聽
阿新 • • 發佈:2019-02-17
最近的專案需要做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"/>