20161202
又是关于安卓里窗口悬浮框的事。
之前项目中有个要求,不管项目运行没只要在后台推送一个消息后就得弹出一个悬浮框出来展示,之前也提到了,安卓里这块说难很难说简单也简单,之前就是加了一个权限非常大的权限代码然后那部分代码就生效了,但是有几个问题,因为这个权限非常牛,所以相对应的安全方面也就有了隐患,比如你程序都没有运行但是你手机桌面上却弹出一个悬浮框出来,是正常数据倒是行如果是一些恶意广告那就恶心了,你根本不知道是哪个app弄的,所以有些手机系统方面为了不让这种事发生就默认把这权限给禁用了你加了也没用,比如小米- -。
还有就是如果手机系统版本的API等于或小于17的时候虽然可以弹出来但是却没有点击事件,这就尴尬了想关闭都关闭不了。
我查了下这方面的博客找到了一些解决方案,不过解决的不够根本,因为如果用户都给你禁用了你还是不能让用户看见,但暂时只能这样了尽力就行。
参考了2篇博客:http://www.jianshu.com/p/634cd056b90c 和 http://www.jianshu.com/p/167fd5f47d5c
我自己的代码是:
int version_release = Build.VERSION.SDK_INT; // 设备的系统版本
if(version_release>17) {
para.type = WindowManager.LayoutParams.TYPE_TOAST;
}else {
para.type = WindowManager.LayoutParams.TYPE_PHONE;
}
参考博客后通过判断不同的手机安卓版本来进行赋值权限。
这段代码只是讲这一个功能的关键点,其余代码之前博客也贴过就不贴了。