在android中,经常会使用WindowManager来自定义悬浮窗样式,不同的android版本中,用法有所不同,android5.0以后针对一些权限做了限制,需要开发者动态申请,让用户知道应用涉及到了哪部分的权限,这样就防止了应用过多的涉及到用户的隐私数据,也就增加了应用开发的工作量,需要针对不同的版本不同的权限做相关的权限适配。
使用悬浮窗时 我们需要设置WindowManager.LayoutParams 的type类型
1,android4.4之前,如果悬浮窗没有单击事件,则设置type为TYPE_TOAST,反之,需要在配置文件中添加android.permission.SYSTEM_ALERT_WINDOW 并设置Type为TYPE_SYSTEM_ALERT
2,android5.0后,由于谷歌对做了权限的相关调整,可以直接设置TYPE_TOAST 即可满足正常需求(有单击事件),如果需要设置Type类型为TYPE_SYSTEM_ALERT 时,则需要申请System overlay view权限
3,android 7.0后 需要设置Type为TYPE_PHONE,为TYPE_TOAST则很快消失,也可以通过动态权限申请System overlay view的权限实现
网友评论