vivo系統無許可權開啟懸浮框的問題

山有木xi發表於2020-12-20

大家都知道,新增懸浮窗的原理就是獲取WindowManager,然後呼叫WindowManager的 addView(View view, ViewGroup.LayoutParams params)方法即可。 View就是需要顯示的懸浮窗,ViewGroup.LayoutParams包含了是全屏、非全屏和是否需要攔截觸控事件的引數

而在前段時間的vivo幾款手機中出現的一個問題是,沒有給予許可權卻能在應用內開啟懸浮窗,但是當應用位於後臺時,懸浮窗消失,並且再開啟邊無法開啟懸浮窗了,而且會導致異常

這是為什麼呢?

根據log和相關資料發現在我使用FloatWindowParamManager.checkPermission(getApplicationContext())檢測使用者是否給予我們“ 允許顯示在其他應用的上層”這個許可權,而在vivo手機中,當應用處於前臺是,無論使用者是否給予相關許可權,我的判斷總是返回true,也就是總是返回使用者允許懸浮窗存在,而應用處於前臺是,懸浮窗的所有功能卻也是正常執行的,但是一旦處於後臺,懸浮窗消失,重新嘗試開啟,無法正常開啟

經過嘗試發現:原來Vivo在應用前臺可見時會預設給予應用這個許可權,無論實際這個懸浮窗許可權有沒有被使用者允許都可以。但是當應用處於後臺時只有這個懸浮窗許可權開關真的開啟時才能新增顯示懸浮窗!也就是說一樣的程式碼,應用處於前臺是,一直返回true,當應用處於後臺時才是真正的許可權出來的時候

所以,對於Vivo的操作重點空i在於確保App處於後臺時確實獲取到了懸浮窗許可權

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2743780/,如需轉載,請註明出處,否則將追究法律責任。

相關文章