这里先暂且不谈6.0以下的设备的适配。(由于国产机适配比较麻烦,公司没有提供足够的测试机,所以我就只做了6.0及6.0以上的设备)
首先,Android悬浮窗权限是在6.0及6.0以上的设备才统一设立的。(部分国产机在6.0以下就处理了这个权限)
Android悬浮窗的权限名称为:SYSTEM_ALERT_WINDOW
它是运行时权限中的特殊权限中的一个。
它不能通过 Activity 的 requestPermissions() 方法去申请。申请这个权限 永远返回的是 false。
它必须通过 Intent 去申请权限,示例代码如下:
//去申请悬浮窗权限
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(intent);
那么如何去知道是否已经拥有了这个悬浮窗权限呢?示例代码如下:
Settings.canDrawOverlays(getActivity().getApplicationContext())
权限申请成功之后,那么接下来就是显示悬浮窗了。这里不谈原理,只谈怎么实现以及8.0的适配。
问题:我按照网上的教程设置了 WindowManager.LayoutParams的type为