1、需在AndroidManifest中添加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2、需在代码中查询是否开启权限
if(Build.VERSION.SDK_INT>=23)
{
if(Settings.canDrawOverlays(this))
{
//有悬浮窗权限开启服务绑定 绑定权限
addView();
}else{
//没有悬浮窗权限m,去开启悬浮窗权限
try{
Intent intent=new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}catch (Exception e)
{
e.printStackTrace();
}
}
} else{
//默认有悬浮窗权限
addView();
}
3、LayoutParams中的type参数需这样设置
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}