你們真的能屏蔽Home鍵而不對程序產生影響嗎?

最近做到一個項目,是和視頻通話相關的。要求視頻通話的過程中是不允許退出到後臺的。

所以我們的做法是全屏+屏蔽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鍵!!!

還是儘量解決退到後臺導致的問題吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章