[Android] Catch the Home key control

[Android] Catch the Home key control

Android中的Home鍵,在Android的機制中,為了避免惡意軟體讓使用者無法終止軟體而回到桌面,所以在使用onKeyDown方法時,無法捕獲按下Home key的行為。

而在一般的軟體中,按下Home key時,雖然回到桌面,但並不會結束軟體,這次開發的軟體中,需要按下Home鍵時立即結束軟體,但在無法捕獲Home key的狀況下到底該如何做呢?


答案是需要覆寫以下方法:

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

接著再覆寫onKeyDown方法:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_HOME:
        this.finish(); //結束此activity
    break;
return super.onKeyDown(keyCode, event);
}

在此需要注意的是,若軟體需要隱藏status bar,則無法得到Home key的權限,也就是說兩者一定要保留一個,要嘛就是隱藏status bar而放棄home key,要嘛就是得到home key權限而無法隱藏status bar。

(Visited 19 time, 1 visit today)
Facebooktwittergoogle_plusredditpinterestlinkedinmail
Comments are closed.