我正在尝试从扩展Service的类中打开一个活动。当应用程序不在前台/未使用时,我正在执行此任务。我在日志中看到我的服务类使用Intent.FLAG_ACTIVITY_NEW_TASK标志触发了启动活动。但是活动没有打开。但是,如果在前台/正在使用应用程序时服务触发相同的活动,则会打开该活动。
经过几次搜索后,我发现我需要在应用设置的其他权限部分中手动授予“在后台android中运行时显示弹出窗口”权限。
[显示在其他应用程序上的显示权限,SYSTEM_ALERT_WINDOW仅授予对“显示弹出窗口”的访问权限。
在上图中,SYSTEM_ALERT_WINDOW将仅授予您访问“显示弹出窗口”的权限,如果应用程序在前景中/正在使用中,则此方法可以正常工作。但是标记为红色(如果已授予)的权限将使您可以直接从扩展Service的类中打开任何活动。
如何检查或要求用户授予“在后台运行时显示弹出窗口”权限?或此权限受限制吗?
尝试以下代码。
Intent rIntent = context.getPackageManager()
.getLaunchIntentForPackage(context.getPackageName() );
PendingIntent intent = PendingIntent.getActivity(
context, 0,
rIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC, System.currentTimeMillis(), intent);
System.exit(2);