悬浮窗实现参考该Github项目:https://github.com/fanOfDemo/FloatMenuSample
在显示悬浮窗的过程中需要的问题如下:
1、接收开机广播显示悬浮窗,结果发现程序首次安装之后无法接收开机广播,解决办法为:将程序添加到/system/app目录下或者必须先启动一次程序;
2、添加悬浮窗的过程中提示permission denied for window type 2002,这个是权限问题,要么进入系统设置,出现在其他应用上--开启权限,要么代码手动申请权限
AndroidManifest.xml添加权限说明
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !Settings.canDrawOverlays(activity)) {
Toast.makeText(activity, "当前无权限,请授权", Toast.LENGTH_SHORT).show();
activity.startActivityForResult(
new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + activity.getPackageName())), 0);
return false;
}