android - 获取具有签名保护级别的 Android 权限
问题描述
根据android开发人员文档,如果调用应用程序使用与签名相同的密钥签名,则可以获得signature
应用程序中具有保护级别的权限。同样根据this answer,具有保护级别的android权限不能被第三方应用程序获取,但在android开发者文档中,有一个名为保护级别的权限。我在他们的代码中看到了许多声明此权限的代码:A
B
A
signature
REQUEST_INSTALL_PACKAGES
signature
<uses-permission android:name="REQUEST_INSTALL_PACKAGES" />
那怎么可能呢?少了什么东西?
解决方案
那怎么可能呢?
他们有可能在清单中包含该元素,因为他们的开发人员能够输入它。
仅仅因为一个应用程序有一个<uses-permission>
元素并不意味着他们获得了许可。这取决于很多因素,包括protectionLevel
.
在 的特定情况下REQUEST_INSTALL_PACKAGES
,那不具有 的signature
值protectionLevel
。它有signature|appop
. 这appop
是一个令人困惑的值,但它归结为“应用程序可以行使权限的奇怪方式”。在这种情况下,Android 8.0+ 上的包安装程序将彻底拒绝任何未请求此权限并尝试使用ACTION_VIEW
或ACTION_INSTALL_PACKAGE
. 否则,它将提示用户确认此应用程序请求安装包是可以的。
注意:该|appop
部分没有出现在 JavaDocs 中,但它出现在平台清单中,这在运行时很重要。
推荐阅读
- python - 在Python中将数字转换为特定单词
- java - 管理学院学生的应用程序
- java - Java-带缓冲的流
- android - 带有 Handler 和 SharedPreference 的计时器
- ubuntu - 找不到包 - 将 libav 添加到 PKG_CONFIG_PATH 环境变量
- html - 将查询输出格式化为 html 表
- javascript - 将 jQuery 对象转换为 html 时保留数据
- excel - 将包含循环、if 或 else 的公式转换为 VBA 代码
- python - 在 python 上求解非线性方程
- javascript - 如何从 iPhone 将页面源发送到 php post