2010-02-09 40 views
1

我需要我的活動以編程方式用 接收器處理HOME按鈕按下,但事件未觸發。但是,如果我在清單文件活動部分中將其聲明爲 ,我可以, 成功註冊並捕獲此意圖過濾器。下面是 的代碼,不工作的接收器:以編程方式捕捉HOME意圖

BroadcastReceiver br; 

br = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
       return; // I put a breakpoint here to see if this gets called 
     } 
}; 


IntentFilter intf = new IntentFilter(); 
intf.addAction(Intent.ACTION_MAIN); 
intf.addCategory(Intent.CATEGORY_HOME); 
intf.addCategory(Intent.CATEGORY_DEFAULT); 

registerReceiver(br, intf); 

有誰知道爲什麼這個不能捕獲home鍵點擊?

順便說一句,我試着通過創建另一個活動 並在清單中指定其意圖過濾器來解決此問題。我在清單中設置了啓用=「false」的活動 ,但我無法弄清楚如何在運行時啓用該活動。底線,我只想 註冊我的應用程序的主頁按鈕意圖過濾器只有當我的 應用程序正在運行,我不知道如何做到這一點。

回答

3

如果您嘗試實施替換主屏幕,則需要將Intent過濾器放在清單中 - 請參閱SDK中的Home示例應用程序。

如果您試圖阻止HOME鍵,請不要。

+0

是的,它在清單中工作,但我想在運行時以編程方式打開/關閉它。 謝謝你的禮貌:) – Alex 2010-02-09 16:17:47

+0

是的,不幸的是,我不認爲這是有效的。但是,我錯過了部分問題:「我在清單中將活動設置爲enabled =」false「,但我無法弄清楚如何在運行時啓用該活動。」 - 你應該可以用'PackageManager'的'setComponentEnabledSetting()'方法做到這一點。 – CommonsWare 2010-02-09 16:29:42

+0

謝謝,我認爲它的工作原理! – Alex 2010-02-09 17:17:44

0

永遠不應該有一種情況,您應該重寫home鍵,以確保用戶始終保持對手機的控制權。你究竟想要做什麼?如果你想檢測你的活動何時不再可見,你應該重寫onStop()。

+0

我想添加我的操作作爲主頁按鈕單擊的合法第二個來源,如果我將意圖過濾器放入manifest.xml操作部分,我可以輕鬆地做到這一點。我唯一想要做的不同是我想要這個功能ON DEMAND,因爲將過濾器放入manifest.xml動作中,只要應用程序已安裝,就會爲我的按鈕單擊操作註冊,而我不希望它執行此操作那。 – Alex 2010-02-09 16:14:27

+0

市場上的幼兒鎖是合法覆蓋主頁按鈕的應用程序的一個很好的例子。 – 2010-02-10 04:00:59

相關問題