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