如下图, 截图是在使用 Chrome 时截的, 但是屏幕顶部却有 UC 的 view 浮在屏幕上. 我使用的是小米, 我并没有给 UC 授悬浮窗权限, 所以我看到这个悬浮窗时是很震惊的.
?...TYPE_PHONE就可以悬浮在很多 view 的上方了, 但是调用这个方法需要申请android.permission.SYSTEM_ALERT_WINDOW权限, 在很多机型上, 这个权限的名字叫悬浮窗...看到这里, 我也觉得很奇怪, 我在悬浮窗原理中写的是我知道的实现悬浮窗的方法, UC 的实现好像跟我调用的是相同的 API, 也没看到反射之类可能展示奇技淫巧的代码, 为什么 UC 就可以不需要权限直接显示悬浮窗呢...验证
实际测试了一下, 将 type 设置成 TYPE_TOAST 果然有奇效, 不需要android.permission.SYSTEM_ALERT_WINDOW权限就能显示一个悬浮窗....在这个 ROM 上表现为:使用TYPE_PHONE这类需要权限的 type 时, 只有在 app 处于前台时能显示悬浮窗, 且能正常接受触摸事件. 如果在应用详情里面授悬浮窗权限, 则工作完全正常.