我的Android应用程序对一个尚不存在的第三方应用程序使用权限

我的Android应用程序对一个尚不存在的第三方应用程序使用权限,android,android-permissions,Android,Android Permissions,下面是一个场景:我开发了一个Android应用程序,它使用其他应用程序的ContentProvider。我在AndroidManifest.xml文件中有所需的位,但使用另一个应用程序的内容只是一项功能——用户不需要安装第三方应用程序,完全可以忽略它 问题是:当用户决定安装第三方应用程序以充分使用我的软件时,她没有机会授予我的应用程序缺少的权限,因为它在安装期间没有显示(Android对此没有任何线索),并且在软件更新或重新安装之前,Android不会再次要求它。我的应用程序无法简单地开始使用该

下面是一个场景:我开发了一个Android应用程序,它使用其他应用程序的ContentProvider。我在AndroidManifest.xml文件中有所需的位,但使用另一个应用程序的内容只是一项功能——用户不需要安装第三方应用程序,完全可以忽略它

问题是:当用户决定安装第三方应用程序以充分使用我的软件时,她没有机会授予我的应用程序缺少的权限,因为它在安装期间没有显示(Android对此没有任何线索),并且在软件更新或重新安装之前,Android不会再次要求它。我的应用程序无法简单地开始使用该权限,因为:

java.lang.SecurityException: Permission Denial: opening provider X from ProcessRecord{...} (...) requires perm.Y or perm.Z
这是完全合理的,我可以捕捉到异常,应用程序将继续工作,就好像第三个应用程序没有安装一样,但这对用户来说是违反直觉的。我发现的唯一解决方案(不太可接受)是要求用户重新安装我的应用程序,以便能够向其他应用程序授予权限

我发现的唯一解决方案(不太可接受)是要求用户重新安装我的应用程序,以便能够向其他应用程序授予权限


您可以在您的第三方应用程序(例如,
perm.Y
perm.Z
)中为相同权限包含
元素。然后,您将在安装时获得该权限,并且在安装第三方应用后该权限将生效,因此,第三方应用程序可能会采取措施。因此,从长远来看,您可能需要与第三方协商,以确保您以第三方可以接受的方式完成此项工作。

谢谢。这是一个非常严重的安全漏洞,就像一个应用程序可以提前请求权限一样(如我的情况),并且在安装“true”应用程序后在没有任何用户确认的情况下使用它一样。@SkarabePL:同意,这就是为什么我发布了
PermissionUtils
类来帮助检测问题的原因。