如果在多个清单中声明了许可,会发生什么?

时间:2014-05-20 15:06:59

标签: android android-permissions

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

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

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

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

1 个答案:

答案 0 :(得分:2)

  

我认为在这种情况下的推理是,如果缺少其中一个组件,至少在另一个组件中声明了权限。

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

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

  

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

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