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懸浮框的實現Android
- android懸浮框(service形式)Android
- Android 懸浮框實現方法Android
- Android 懸浮窗許可權各機型各系統適配大全Android
- Android通過WindowManager實現懸浮框Android
- android螢幕適配的問題Android
- vivo系統無許可權開啟懸浮框的問題
- 適配Android N遇到的兩個問題Android
- Android 懸浮窗Android
- 懸浮窗的一種實現 | Android懸浮窗Window應用Android
- Android懸浮窗的學習Android
- 適配懸浮窗許可權與系統設定修改許可權
- Android拍照與相機適配問題彙總Android
- Android適配: 拉伸適配的缺點Android
- Android:會呼吸的懸浮氣泡Android
- Android 懸浮視窗的實現Android
- iOS11適配遇到的問題iOS
- 自制懸浮框,愉快地檢視棧頂 Activity
- Android 懸浮窗 System Alert WindowAndroid
- 菜鳥學JS(三)——自動隱藏的懸浮框JS
- Android適配Android
- 直播平臺製作,Android 懸浮窗延時5秒返回APP問題AndroidAPP
- [iOS]適配iOS10問題iOS
- 移動APP測試-Android螢幕適配問題(一)APPAndroid
- 移動APP測試:Android螢幕適配問題二APPAndroid
- Android許可權管理之RxPermission解決Android 6.0 適配問題Android
- 滑鼠懸浮可以伸縮的搜尋框程式碼例項
- Android7.0的適配Android
- 苦逼的Android適配Android
- 記一個 Android 14 適配引發的Android 儲存許可權問題Android
- ios11 劉海屏 安全區域 適配 彈框區域適配iOS
- 移動端iphoneX的適配問題iPhone
- Android 攝像頭預覽懸浮窗Android
- Android仿微信文章懸浮窗效果Android
- Android 輕鬆實現 RecyclerView 懸浮條AndroidView
- Android懸浮窗--獲取記憶體Android記憶體