- 正常情况下的处理:
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
以及在清单文件中添加 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
导致需要提醒用户设置,网上查阅资料,判断该权限是否开启,需要适配多种机型,极为不便 - 可以将TYPE_SYSTEM_ALERT 改成TYPE_TOAST此时不需要悬浮窗权限开启,该全局提示框亦可弹出
- 但是TYPE_TOAST存在版本的问题
- Android 4.4以下取消了界面交互功能(无法获取触摸事件) 可以使用层级较低的TYPE_PHONE代替。
- Android 4.4 到 7.0 可以使用TYPE_TOAST。全局Dialog
- Android 7.1.1 存在崩溃的问题,解决方案:使用需要申请system alert window权限的系统级悬浮窗,或者是层级较低的TYPE_PHONE悬浮窗。Android 7.1.1对TYPE_TOAST做了限制
- Android 8.0 上TYPE_TOAST崩溃。新增一个Window Type,TYPE_APPLICATION_OVERLAY在TYPE_PHONE,TYPE_SYSTEM_ALERT,TYPE_TOAST之上。Android 8.0变更
05-11 22:14