我可以请求系统重新加载我的应用程序权限吗



有没有任何方法可以在不重新安装应用程序或在非根设备上重新启动设备的情况下,以编程方式要求Android重新加载/重新授予我的应用程序权限?

为什么我需要它

我的应用程序(ClientApp(绑定到另一个应用程序(ServiceApp(在AIDL中声明的服务。ServiceApp是一个我不能修改的第三方应用程序,它声明了ClientApp需要绑定到其服务的权限,所以我将该权限添加到了ClientApp的清单中:

<uses-permission android:name="com.example.service.API" />

在安装ClientApp之前安装ServiceApp时,一切正常。然而,当我首先安装ClientApp,然后安装ServiceApp时,在ClientApp:中对ServiceApp的服务调用bindService时,我会遇到异常

java.lang.SecurityException: Not allowed to bind to service Intent { act=com.example.service.API pkg=com.example.service }

我的理解是,我的应用程序没有被授予所请求的安装权限,因为在安装ServiceApp之前,它没有在系统中声明。我可以在Android上修复它<在ClientApp的清单中声明ServiceApp的权限,但由于安全原因,这在Android 5.0+中是不可能的。

如果我能以某种方式从我的代码中重新加载权限(这显然发生在设备重新启动时(,我就能解决这个问题。

您应该检查权限是否已授予。如果它被授予,您可以使用它,否则您可以将权限请求显示为弹出

相机权限示例:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)
{
// permission granted
}
else
{
// ask permission to user
ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.CAMERA}, Constants.PermissionRequestCodes.CAMERA_REQUEST);
}

最新更新