以下是该场景:我开发了一个使用其他应用程序的ContentProvider的Android应用程序。我在AndroidManifest.xml文件中有所需的位,但使用其他应用程序的内容只是一个功能 - 用户不需要安装第三方应用程序,忽略它是完全合理的。
问题是:当用户决定安装第三方应用程序以完全使用我的软件时,她没有机会授予我的应用程序缺少的权限,因为它在安装期间没有显示(Android没有任何关于它),在软件更新或重新安装之前,Android不再要求它。我的应用程序不能简单地开始使用权限,就像它总是被授予一样,因为:
java.lang.SecurityException: Permission Denial: opening provider X from ProcessRecord{...} (...) requires perm.Y or perm.Z
这是完全合理的,我可以捕获异常,应用程序将继续工作,就好像没有安装第三个应用程序,但它对用户来说是违反直觉的。我找到的唯一解决方案(不太可接受)是要求用户重新安装我的应用程序,以便能够将权限授予其他应用程序。
答案 0 :(得分:1)
我找到的唯一解决方案(不太可接受)是要求用户重新安装我的应用程序,以便能够将权限授予其他应用程序。
您可以在自己的第三方应用中添加<permission>
元素以获得相同的权限(例如,perm.Y
或perm.Z
)。然后,您将在安装时获得权限,并且一旦安装了第三方应用程序,它将起作用。 The fact that this is possible is bad,第三方应用可能会采取措施。因此,从长远来看,您可能需要与第三方协商,以确保您以第三方认为可以接受的方式进行此操作。