首页 > 解决方案 > 获取具有签名保护级别的 Android 权限

问题描述

根据android开发人员文档,如果调用应用程序使用与签名相同的密钥签名,则可以获得signature应用程序中具有保护级别的权限。同样根据this answer,具有保护级别的android权限不能被第三方应用程序获取,但在android开发者文档中,有一个名为保护级别的权限。我在他们的代码中看到了许多声明此权限的代码:ABAsignatureREQUEST_INSTALL_PACKAGESsignature

<uses-permission android:name="REQUEST_INSTALL_PACKAGES" /> 

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

标签: android

解决方案


那怎么可能呢?

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

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

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

注意:该|appop部分没有出现在 JavaDocs 中,但它出现在平台清单中,这在运行时很重要。


推荐阅读