2012-09-15 125 views
9

我發展鎖定畫面,我想在冰淇淋三明治和果凍豆禁用主頁按鈕,我可以在Android 2.2的使用下面的方法阻止它,2.3塊主頁按鈕

@Override 
public void onAttachedToWindow() { 
    // TODO Auto-generate method stub 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 

也試過這種

getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 

我在這裏也沒有通過方法或onKeyDown

但這些滿足獲取事件信息在ICS裏,我沒有爲我工作,果凍豆如果有任何方法可以取代它然後讓我知道

回答

14

後ICS即Android 4+,HomeButton的重寫已被刪除出於安全原因,使用戶退出以防應用程序變成惡意軟件。

另外,不讓用戶遠離應用程序是一種非常好的做法。但是,由於您正在製作鎖屏應用程序,因此您可以將其作爲啓動器進行聲明,以便在按HomeButton時它將簡單地重新啓動應用程序並保持在那裏(用戶只會注意到屏幕輕微閃爍)。

編輯#1:這裏是another workaround,更適合您的需求。

編輯#2:剛剛碰到this.還沒有測試過。但看起來還挺有前途的。不知道它是否會奏效,但你可以試試看。

+1

完全同意@ swayam – dhams

+1

@Swayam,聲明作爲啓動器的活動將提示用戶選擇默認啓動器,接下來它也會搞亂啓動器配置。 –

+0

我同意你提示用戶選擇。但是,他只需要做出一次選擇,並按照自己的喜好進行保存。這是我們需要做出的一些假設,尤其是考慮到用戶希望鎖屏應用按預期工作的事實。而且,就「弄亂髮射器配置」而言,請您詳細說明一下,因爲我從來沒有遇到過這樣的問題? – Swayam

9

有幾件事情,你可以嘗試:

  • 您可以設置您的活動單頂,並有明確的啓動到時onPause()方法被調用頂部標誌,這將阻止home鍵和開展其他活動。

  • 收聽BOOT_COMPLETED廣播以開始您的活動 - 這將保護您免遭將設備中的電池從設備中重新啓動的用戶。

  • 添加Alarmmanager如果您的應用程序處於活動狀態,並且如果不存在,那麼將啓動它 - 這將保護您免受使用者的一些設法關閉您的應用程序(可能與外部工具)的關係。

做到這一點,沒有一個能夠退出你的應用程序。

+0

那些是那裏的一些精彩點!我在我的一個應用程序中使用了Boot_completed廣播,但使用'AlarmManager'是純粹的天才! +1! – Swayam

+1

我試過第一個,不適合我...... :(@llya_Gazman –

1

我認爲從Android應用內檢測和/或攔截HOME按鈕是不可能的。這是內置於系統中以防止無法退出的惡意應用程序。