Android 关于各版本悬浮窗权限的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ltym2014/article/details/78860620

Android 关于悬浮窗权限的问题

想在app内的任一页面均能弹出Dialog,实现全局Dialog,开始认为Dialog只能依附在Activity上,后来查询到可以采用悬浮窗模式。

  • 正常情况下的处理:
    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变更

没有更多推荐了,返回首页