小米 MIUI8,对 Toast 类型悬浮窗做了权限控制。 实测在 MIUI8 中,打开悬浮窗权限可以显示 Toast 类型的悬浮窗。而使用原生 Toast 类,却不需要权限就可以显示,看来小米的系统在 framework 层对 Toast 类型的权限做了特殊处理。 但是,只要 Toast 能显示,就说明肯定有方法绕过去。最好的方法,就是把小米改动的 framework 层代码扒出来,看看原生 Toast 和自定义 Toast 类型悬浮窗在权限处理上的区别是什么,但是有一定的难度,在研究了一天无果后,先使用了第二种更容易实现的方法。 既然原生 Toast 不需要权限,那我们就在原生 Toast 的基础上继续封装拓展。