Android 14中<queries>内<package>元素数量上限及超限问题咨询
Android 14中元素内的数量限制及批量声明方案
数量上限说明
Android 14对AndroidManifest.xml里<queries>元素下的<package>元素设置了1000个的严格上限,超过这个数量会抛出如下异常:
Caused by: java.lang.SecurityException: The number of child package elements exceeded the max allowed in queries.
Android 14之前的版本无此限制。
批量声明8000个的替代方案
直接添加8000个<package>元素会触发上述异常,建议采用以下替代方式:
- 用意图过滤替代单个包声明:如果你的App是通过特定Intent与目标App交互(比如启动Activity、发送广播),可以在
<queries>内添加对应的<intent>元素,声明匹配的action、category、data等,无需逐个列包名就能匹配符合条件的App。 - 基于签名的批量授权:如果目标8000个App和你的App使用相同的数字签名,在
<queries>内添加<signature>元素,匹配签名后即可自动授权访问所有同签名的App,无需逐个声明包名。 - 动态查询(按需使用):如果只是需要查询设备上已安装的目标App,可在代码中使用
PackageManager的getInstalledPackages()或相关API,但需注意Android 11+的权限要求,此方法仅适用于无需在Manifest预声明交互场景的情况。
内容的提问来源于stack exchange,提问作者Viktor Vasilyevskii
相关产品推荐
相关产品推荐

