我需要从我的绑定服务获得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);
我需要在设置屏幕打开时保持我的服务运行,以便用户授予权限,然后成功返回服务中的上一个任务。