android悬浮窗及权限

Android申请悬浮窗权限的目的

悬浮窗权限是Android提供的权限中的特殊权限,要申请后再使用,否则会导致弹框不能显示、程序崩溃等问题

注意事项

  1. 悬浮窗适配总体思路
    if(系统没有赋予APP弹出悬浮窗的权限){
    等用户打开权限后,再弹出悬浮窗
    }else{
    直接弹出悬浮窗
    }
  2. 例如要显示一个Dialog设置其为 系统级别
mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

有的文章说MIUI系统可设置为WindowManager.LayoutParams.TYPE_TOAST避开悬浮框权限的申请,我的实践经验是不要这样设置,否则利用参考文献中的方法操作后dialog还是显示不出来

  1. 写程序时导入包要导正确,例如我们要用的Setting
    import android.provider.Settings;不要导错
  2. 不同api版本下对悬浮窗权限的处理方法
  • 由于判断权限的类 AppOpsManager 是 API19 版本添加,所以Android 4.4 之前的版本(不包括4.4)就不用去判断了,直接调用 WindowManager 的 addView 方法弹出即可。
  • 悬浮窗权限在 6.0 之后就被 google 单独拿出来管理了,好处就是对我们来说适配就非常方便了,在所有手机和 6.0 以及之后的版本上适配的方法都是一样的,首先要在 Manifest 中静态申请权限,然后在使用时先判断该权限是否已经被授权,如果没有授权使用下面这段代码进行动态申请
android悬浮窗及权限_第1张图片
不同api版本下对悬浮窗权限的处理方法.png

参考文献

Android 悬浮窗权限各机型各系统适配大全
Android悬浮窗及权限 by JustDo23
github项目

你可能感兴趣的:(android悬浮窗及权限)