2012-11-22 56 views
-1

嗨我在尋找禁用只有主頁在Android中。我正在試圖做的是在Android中禁用只有主頁按鈕

@Override 
    public void onAttachedToWindow() { 
     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
     super.onAttachedToWindow(); 
    } 
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 



     if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 

      return true; 
     } 

     if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) { 
         //action 
     } 
     if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) { 
         //action 
     } 
     if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER) { 
      //action 
     } 

     return false; 
    } 

但是通過這個我的後退按鈕太被禁用了。有沒有什麼辦法可以在android中禁用HomeKey。請回復。

+0

「主頁」按鈕事件未傳送到常規應用程序。 http://code.google.com/p/android/issues/detail?id=1979 - 您無法禁用它。 – zapl

+0

在我的應用程序中,我試圖禁用主頁按鈕。它正在做這件事。但與此同時它也禁用我的後退按鈕,我不想 – Aada

+0

嗨Zapl你能解釋一下你的意思是不交付給應用程序。謝謝 – Aada

回答

0

是的,這是可能的。在你表現,你的活動減速下,更換

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

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

注意這種變化,你的申請將不會是「所有應用」部分中可見。另外,用戶需要將應用程序設置爲默認主屏幕。試試「幼兒鎖」應用程序,它很好地處理了這種情況。

1

documentation狀態:

Home鍵。此密鑰由框架處理,絕不會將 交付給應用程序。

更具體地說,密鑰由PhoneWindowManager在方法interceptKeyBeforeDispatching(..)中使用。在這種方法中,密鑰被處理並消耗,這意味着Android不允許覆蓋此功能。

UPDATE:

之所以你回的行爲不工作了,是因爲你自己已經處理它。密鑰輸入onKeyDown-方法,您可以通過返回true或false來使用密鑰(是或否)。通過實施這樣的:

if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 

     return true; 
} 

您明確說明你已經在處理您的Activity返回鍵這也意味着,「走出去背」的默認行爲將被覆蓋。要恢復到其原始行爲,請使用return super.onKeyDown(keyCode, event);

+0

OKye。感謝您的迴應,但在嘗試處理上述代碼時,它是如何禁用所有內容的。不能我以某種方式禁用只有homebutton,而不是返回鍵 – Aada

+0

我已更新我的評論。正如我已經解釋的那樣,'homebutton'功能不能被你改變。 – DroidBender

+0

嗨我試圖通過返回false而不是返回true。但它仍然不會工作:) – Aada