从绑定服务启动活动以获取DrawOverlays权限,但保持服务运行

时间:2019-05-15 04:50:00

标签: android android-permissions bindservice

我需要从我的绑定服务中获得 DrawOverlays权限。我正在启动活动-Android提供的Settings.ACTION_MANAGE_OVERLAY_PERMISSION,以打开用户的设置活动并授予权限。

问题是活动一旦打开,Android就会关闭我的服务。而且由于服务无法启动活动,因此,用户需要在授予许可后重新打开与该服务绑定的应用程序。

我试图首先启动另一个活动(对话框活动),然后获取对话框活动以打开设置活动屏幕。尽管如此,该服务仍在关闭。

我还尝试将对话框活动绑定到服务,以希望使服务保持活动状态,但是结果是,首先关闭,离开了先前的客户端,然后使用新的客户端启动,例如dialog活动。

我正在从这样的服务中打开活动。

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);

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

0 个答案:

没有答案