0

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

4

1 回答 1

2

这是为什么?

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

其他权限要求您的应用使用与固件签名相同的签名密钥进行签名,或者安装在系统分区上(例如,由 root 设备用户)。

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

如果您查看平台清单,这些权限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" />

此权限只能由使用与固件签名相同的签名密钥签名的应用程序持有。

于 2013-07-20T21:58:10.807 回答