Мне нужно получить разрешение DrawOverlays от моей связанной службы . Я запускаю действие - Settings.ACTION_MANAGE_OVERLAY_PERMISSION
, предоставляемое Android, чтобы открыть действие настройки для пользователя, дать разрешение.
Проблема в том, что как только активность открывается, андроид выключает мой сервис. А поскольку служба не может запустить действие, в результате пользователю необходимо повторно открыть приложение, которое привязывается к службе после предоставления разрешения.
Я пытаюсь сначала запустить другое действие (диалоговое задание), а затем получить диалоговое задание, чтобы открыть экран действия настроек. Тем не менее, служба закрывается.
Я также пытался привязать активность диалога к службе в надежде сохранить службу активной, но в результате сначала отключается, оставляя предыдущего клиента, а затем запускается с новым клиентом, т. Е. Операция диалога .
Я открываю активность из службы, подобной этой.
if (!Settings.canDrawOverlays(nextGenPrintingService)) {
Log.i(Constants.TAG, "Requesting Permission");
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" +myService.getApplicationContext().getPackageName()));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
myService.startActivity(intent);
} else {
Log.i(Constants.TAG, "Permission already available");
}
Служба - это служба привязки , которая возвращает договор обмена сообщениями в функции onBind()
.
Служба запускается из другого приложения, используя
Intent intent = new Intent();
intent.setClassName(Constants.SERVICE_PACKAGE, Constants.SERVICE_CLASS);
context.bindService(intent,
serviceConnection, Context.BIND_AUTO_CREATE);
Мне нужно, чтобы моя служба работала, пока экран настроек открыт, чтобы пользователь мог дать разрешение, а затем успешно вернуться к предыдущему заданию в службе.