博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小米Adnroid默认禁止悬浮框的使用,导致开发的悬浮框无法接收事件
阅读量:4365 次
发布时间:2019-06-07

本文共 1288 字,大约阅读时间需要 4 分钟。

比如你建了一个悬浮框:

WindowManager windowManager = getWindowManager(context);		int screenWidth = windowManager.getDefaultDisplay().getWidth();		if (smallWindow == null) {			smallWindow = new FloatWindowSmallView(context);			if (smallWindowParams == null) {				smallWindowParams = new LayoutParams();				smallWindowParams.type = LayoutParams.TYPE_PHONE;				smallWindowParams.format = PixelFormat.RGBA_8888;				smallWindowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL						| LayoutParams.FLAG_NOT_FOCUSABLE;				smallWindowParams.gravity = Gravity.LEFT | Gravity.TOP;				smallWindowParams.width = FloatWindowSmallView.viewWidth;				smallWindowParams.height = FloatWindowSmallView.viewHeight;				smallWindowParams.x = screenWidth;				smallWindowParams.y = 0;				smallWindow.setVoipUIPaddingBottom(paddingBottom);			}			smallWindow.setParams(smallWindowParams);			windowManager.addView(smallWindow, smallWindowParams);		}

如果你用的是小米手机,你会发现这个窗口接收不到消息,消息会透传到下一层,如果下一层没有接收者,才会被接收。此时你把【安全中心】->【授权管理】->[应用权限管理]->【权限管理】中你的app的悬浮框设置为允许,就可以接收到消息了。这应该是小米ROM自己独特的地方,拿过其他手机测试都不存在这个情况。所以开发Android就这点不好,碎片化太严重,各有各的特色。

 

【后记】后来无意中看到一篇文章,可以在不使用权限的情况下展示悬浮窗,并兼容小米特殊ROM的情况 链接:  或者 

解决方案如下:

在手机API Level>=19的情况下,设置type为TYPE_TOAST, 低版本使用TYPE_PHONE  

因为在低版本上TYPE_TOAST无法接收触摸事件。

转载于:https://www.cnblogs.com/cmgrass/p/5008397.html

你可能感兴趣的文章
Django进阶高级
查看>>
数据库连接池的原理
查看>>
MyBatis学习总结_18_MyBatis与Hibernate区别
查看>>
十八.模块
查看>>
2017-7-27-关键20小时,快速习得任何技能
查看>>
SHELL日志分析 实例一
查看>>
闭包函数
查看>>
ZOJ Monthly, November 2012 - I - Search in the Wiki
查看>>
TextSwitcher,译为文字转换器控件
查看>>
C# 多线程编程(3):线程池ThreadPool
查看>>
Mac 使用技巧
查看>>
Whu 1603——Minimum Sum——————【单个元素贡献、滑窗】
查看>>
Windows下安装PHP扩展及资源下载地址(memcached为例)
查看>>
Node.js安装与配置 -- 收录
查看>>
hdu 4918
查看>>
队列- 链式存储-Java实现
查看>>
在 Ubuntu 下配置 C/C++ 开发环境【转】
查看>>
前端项目-代码开发规范(个人整理版)
查看>>
action-mapping
查看>>
HTML嵌套规则
查看>>