android – 如果在多个清单中声明了权限会发生什么?

在很短的时间内,我遇到了两种情况,其中不同的组件/应用程序声明了相同的权限,即通过执行以下操作:

<permission android:name="com.company.A_PERMISSION" android:protectionLevel="signatureOrSystem" />

值得一提的是,这种情况下的组件都是系统应用程序.我想在这种情况下的推理是,如果其中一个组件丢失,至少权限在另一个组件中声明.

在多个位置声明权限是否有任何副作用?

最佳答案

I suppose the reasoning in this case is that if one of the components is missing, at least the permission gets declared in the other.

正确.虽然在您的情况下可能不相关,但使用它的一个示例是SDK.

让我们假设Twitter开放了一个SDK来使用他们的Android应用程序,它需要一个自定义权限.让我们进一步假设他们希望他们的Vine应用程序使用此SDK.但是,用户可以按任何顺序安装这些应用程序(Twitter,然后是Vine;或Vine,然后是Twitter).如果用户首先安装Vine,并且它请求不存在的自定义权限,则它不会获得权限,因此在安装Twitter之后尝试使用Twitter SDK时会被搞砸.通过在Twitter和Vine应用程序中定义自定义权限,Vine确保其< uses-permission>的权限存在.元素,因此它可以获得该权限(假设满足android:protectionLevel约束).

Are there any side effects to declaring permissions in multiple locations?

好吧,使用任何自定义权限的问题是somebody else might define it first, perhaps for nefarious ends.

点赞