3

我需要从我的绑定服务获得DrawOverlays 许可。我正在启动活动 -由 Android 提供,为用户打开设置活动,授予权限。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);

我需要在设置屏幕打开时保持我的服务运行,以便用户授予权限,然后成功返回服务中的上一个任务。

4

0 回答 0