获取带有签名保护级别的Android权限

Meh*_*rki 3 android

根据Android开发者文档,如果调用应用程序使用与签名相同的密钥进行签名,则可以获得signature应用程序中具有保护级别的权限。另外根据这个答案,具有保护级别的android权限不能被第三方应用程序获取,但在android开发人员文档中,有一个名为保护级别的权限。我见过很多代码在其代码中声明了此权限:ABAsignatureREQUEST_INSTALL_PACKAGESsignature

<uses-permission android:name="REQUEST_INSTALL_PACKAGES" /> 
Run Code Online (Sandbox Code Playgroud)

那怎么可能呢?少了什么东西?

Com*_*are 8

那怎么可能呢?

他们有可能在清单中包含该元素,因为他们的开发人员能够输入它。

仅仅因为应用程序有一个<uses-permission>元素并不意味着它们获得了许可。这取决于很多因素,包括protectionLevel.

在 的具体情况下REQUEST_INSTALL_PACKAGES, 没有 的signatureprotectionLevel。它有signature|appop。这appop是一个令人困惑的值,但它归结为“应用程序可以通过奇怪的方式行使权限”。在这种情况下,Android 8.0+ 上的软件包安装程序将彻底拒绝任何不请求此权限并尝试使用ACTION_VIEW或 的应用程序ACTION_INSTALL_PACKAGE。否则,它会提示用户确认该应用程序可以请求安装软件包。

注意:该|appop部分不会出现在 JavaDocs 中,但会出现在平台清单中,这在运行时才是重要的。