AndroidManifest中queries配置MAIN Intent是否属隐私漏洞?
关于通过
<queries>的ACTION_MAIN意图获取已安装应用是否等同于QUERY_ALL_PACKAGES的解答 实际效果对比
- 通过在
AndroidManifest.xml的<queries>中添加如下配置:
再调用<queries> <intent> <action android:name="android.intent.action.MAIN" /> </intent> </queries>getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_MAIN), PackageManager.MATCH_ALL),确实能获取绝大多数已安装应用——因为几乎所有面向用户的正规应用都包含带ACTION_MAIN的启动Activity,从覆盖范围来看,和申请QUERY_ALL_PACKAGES权限的效果高度接近,但并非完全等价:少数无启动Activity的系统后台应用、纯服务类APP无法通过这种方式被检索到。
隐私风险与官方定位
- 已安装应用列表属于敏感隐私信息,它能间接推断用户的行为偏好、使用习惯(比如安装特定领域的APP)。从隐私保护的角度看,这种通过
ACTION_MAIN意图绕过QUERY_ALL_PACKAGES高危权限审核的方式,确实属于潜在隐私漏洞。 - Android 11引入
<queries>机制的初衷是限制应用对其他包信息的无差别访问,QUERY_ALL_PACKAGES被列为高危权限,需要单独申请且Google Play会严格审核使用场景;而基于ACTION_MAIN的意图查询,官方并未将其归为需要特殊审核的范畴,这就导致开发者可以轻松获取大量应用列表,而无需满足高危权限的申请要求。
现状与后续可能
目前确实有大量应用采用这种配置,开发者通常用它来实现应用跳转、关联唤醒或竞品分析等功能。但随着隐私合规要求的收紧,Google后续有可能调整<queries>的过滤规则,限制这类宽泛意图的查询范围,缩小其与QUERY_ALL_PACKAGES权限的差距。
内容的提问来源于stack exchange,提问作者pb_
相关产品推荐
相关产品推荐

