在短时间内,我遇到过两种情况,其中不同的组件/应用程序声明了相同的权限,即通过执行以下操作:
<permission android:name="com.company.A_PERMISSION" android:protectionLevel="signatureOrSystem" />
值得一提的是,本案例中的组件都是系统应用程序。我想在这种情况下的推理是,如果其中一个组件丢失,至少权限在另一个组件中声明。
在多个位置声明权限是否有任何副作用?
答案 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。