Android10.0之后,谷歌对于APP监听系统开机广播来实现自启动的方式做了新的限制方案,相对于旧的Android版本,开发者需要在AndroidManifest.xml文件里声明悬浮窗权限(Android6.0以上才能使用):
<uses-permission android:name ="android.permission.SYSTEM_ALERT_WINDOW" />
悬浮窗权限属于Android特殊权限,无法动态申请获得,需要在应用内通过跳转的方式来开启此权限。获取方案示例如下:
@RequiresApi(api = Build.VERSION_CODES.M)
//检查是否已经授予权限
if (!Settings.canDrawOverlays(this)) {
//若未授权则请求权限
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 0);
}