最近做到一個項目,是和視頻通話相關的。要求視頻通話的過程中是不允許退出到後臺的。
所以我們的做法是全屏+屏蔽Home,當然返回鍵肯定是掛斷電話了。
但目前屏蔽Home鍵的方法無非就是鑽了Android的一些漏子,把window type 設置成TYPE_KEYGUARD,TPYE_KEYGUARD_DIALOG或者是TYPE_SYSTEM_ALERT。這樣確實framewok層在判斷如過window type時如果是這幾種確實是不會響應Home的操作的。
但是 2.2以前或許能行,2.2以後就難說了,而且得看不同的機型,廠家有沒有修改源碼,隨便廠家怎麼一改,你想在上層屏蔽Home簡直是“不可能事件”
即便是這樣,你不要以爲2.2以前就可以高枕無憂了。
我們測試部門測出問題來了。
當你的Activity正創建的時候調完getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);這句話後,立馬點Home,
很可惜,這個時候還可以點Home。爲什麼呢???
setType設到底層需要點時間撒,可能你這個值剛設進去,底下已經判斷過去了。直接響應了Home的事件。
這下就悲劇了,你再把Activity調出來就已經無法去掉狀態欄了(全屏有問題拉)。原因是這幾種type的根本無法全屏顯示的,這個是系統規定的。
當你鎖屏時你看看狀態欄有沒有,有吧!因爲它要給你看必要的信息,如來了短信之類的。
所以總結一下,應用層根本無法屏蔽Home鍵!!!
還是儘量解決退到後臺導致的問題吧!