Android懸浮框的適配問題
近日在寫程式碼時,發現Android6.0及以下使用懸浮框會崩潰,最開始以為是許可權的問題,但是在查詢log時發現,報錯的地方其實
mWindowManager.addView(floatView, mLayoutParams);
而floatview是內部定義的View,專門處理事件攔截的父View,大致是不會有錯的,於是將目光放在LayoutParams上,LayoutParams實現的是WindowManager.LayoutParams(),WindowManager的addView是定義在介面ViewManager,同時WindowManager也是一個介面,那麼就應該是WindowManager.LayoutParams的type有誤
果不其然,在查閱資料後發現,我使用的是
mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
這個是Android8.0新出的一個特性,因為Android8.0以後,使用SYSTEM_ALERT_WINDOW 許可權的應用無法再使用以下視窗型別來在其他應用和系統視窗上方顯示提醒視窗:
-
TYPE_PHONE
-
TYPE_PRIORITY_PHONE
-
TYPE_SYSTEM_ALERT
-
TYPE_SYSTEM_OVERLAY
-
TYPE_SYSTEM_ERROR
在Android8.0以下我使用的是
mLayoutParams.type = WindowManager.LayoutParams.TYPE_PHONE
正是這個地方出了錯誤,因為一個在Android6.0以上被谷歌官方淘汰的一個type,但是其在Android5.0依然有效,且不會崩潰,那就是
mLayoutParams.type = WindowManager.LayoutParams.TYPE_TOAST
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2743758/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android中的懸浮框Android
- Android懸浮框的實現Android
- Android通過WindowManager實現懸浮框Android
- vivo系統無許可權開啟懸浮框的問題
- Android 懸浮窗Android
- 適配問題
- Android懸浮窗的學習Android
- 懸浮窗的一種實現 | Android懸浮窗Window應用Android
- Android:會呼吸的懸浮氣泡Android
- Android適配: 拉伸適配的缺點Android
- Android 懸浮窗 System Alert WindowAndroid
- Android適配Android
- 手機端的適配問題
- 直播平臺製作,Android 懸浮窗延時5秒返回APP問題AndroidAPP
- 移動APP測試-Android螢幕適配問題(一)APPAndroid
- 移動APP測試:Android螢幕適配問題二APPAndroid
- 記一個 Android 14 適配引發的Android 儲存許可權問題Android
- 移動端適配問題
- iOS11適配遇到的問題iOS
- 移動端iphoneX的適配問題iPhone
- Android中的icon適配Android
- Android仿微信文章懸浮窗效果Android
- Android 攝像頭預覽懸浮窗Android
- Android圖示適配Android
- android 螢幕適配Android
- android全面屏適配Android
- Android P 適配指南Android
- 【轉載】使用WindowManage實現Android懸浮窗Android
- Android 輔助許可權與懸浮窗Android
- [轉]Android輕鬆實現RecyclerView懸浮條AndroidView
- Android螢幕適配(理論適配100%機型)Android
- Android6.0~9.0適配Android
- Android Q 提前適配攻略Android
- Android適配:DP簡述Android
- Android 劉海屏適配Android
- Android RecyclerView實現頭部懸浮吸頂效果AndroidView
- JS錯誤記錄 – 右側懸浮框 – 緩衝運動JS
- android螢幕適配三:通過畫素密度適配Android