android悬浮窗及权限
16lz
2021-01-26
Android申请悬浮窗权限的目的
悬浮窗权限是Android提供的权限中的特殊权限,要申请后再使用,否则会导致弹框不能显示、程序崩溃等问题
注意事项
- 悬浮窗适配总体思路
if(系统没有赋予APP弹出悬浮窗的权限){
等用户打开权限后,再弹出悬浮窗
}else{
直接弹出悬浮窗
} - 例如要显示一个Dialog设置其为 系统级别 的
mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
有的文章说MIUI系统可设置为WindowManager.LayoutParams.TYPE_TOAST
避开悬浮框权限的申请,我的实践经验是不要这样设置,否则利用参考文献中的方法操作后dialog还是显示不出来
- 写程序时导入包要导正确,例如我们要用的Setting
import android.provider.Settings;
不要导错 - 不同api版本下对悬浮窗权限的处理方法
- 由于判断权限的类 AppOpsManager 是 API19 版本添加,所以Android 4.4 之前的版本(不包括4.4)就不用去判断了,直接调用 WindowManager 的 addView 方法弹出即可。
不同api版本下对悬浮窗权限的处理方法.png
- 悬浮窗权限在 6.0 之后就被 google 单独拿出来管理了,好处就是对我们来说适配就非常方便了,在所有手机和 6.0 以及之后的版本上适配的方法都是一样的,首先要在 Manifest 中静态申请
权限,然后在使用时先判断该权限是否已经被授权,如果没有授权使用下面这段代码进行动态申请
参考文献
Android 悬浮窗权限各机型各系统适配大全
Android悬浮窗及权限 by JustDo23
github项目
更多相关文章
- Android(安卓)自定义权限 ( )
- android分享图片到微信,无需申请APP_ID
- Android(安卓)二:root 手机的原理
- android google map v1 v2 v3 参考
- Android静态安全检测 -> Activity组件暴露
- Android图表分析的开发
- Android安全机制(转载)
- Android系统版本与API等级对应关系表
- Android动态权限(兼容6.0以下和魅族手机方案)