为什么我不能使用android.Manifest.permission中的隐藏权限

时间:2013-07-20 21:52:19

标签: android permissions

我声明了一个隐藏在类android.Manifest.permission中的权限。抛出securityException似乎毫无用处。这是为什么?我如何使用隐藏权限?

1 个答案:

答案 0 :(得分:2)

  

为什么?

某些权限要求您的应用使用签署固件的相同签名密钥进行签名。

其他权限要求您的应用程序要么使用签署固件的相同签名密钥进行签名,要么安装在系统分区上(例如,由有根设备的用户安装)。

普通的SDK应用无法拥有这些权限。不幸的是,JavaDocs没有解释哪些权限有哪些要求。

如果您查看the platform manifest,那些signature android:protectionLevel作为其system的一部分的权限允许应用获得该权限,如果它们是由签署固件的相同签名密钥签名的话。那些android:protectionLevel作为<!-- Required to be able to reboot the device. --> <permission android:name="android.permission.REBOOT" android:label="@string/permlab_reboot" android:description="@string/permdesc_reboot" android:protectionLevel="signature|system" /> 的一部分的人可以被安装在系统分区中的应用程序保留。

所以,例如:

<!-- Required to be able to disable the device (very dangerous!). -->
<permission android:name="android.permission.BRICK"
    android:label="@string/permlab_brick"
    android:description="@string/permdesc_brick"
    android:protectionLevel="signature" />

此权限可以由签署了系统分区上安装的固件的相同签名密钥签名的应用程序保存。

{{1}}

此权限只能由签署固件的相同签名密钥签名的应用程序保留。