You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何`getPackagesHoldingPermissions`仅返回系统应用而非所有含互联网权限应用?

问题解决:仅获取到系统应用而非第三方应用的原因
  • 目标SDK版本限制:你的应用targetSdkVersion大概率≥Android 11(API 30),而WireGuard的targetSdkVersion可能低于该版本。从Android 11开始,系统收紧了应用获取其他应用信息的权限,默认情况下只能访问系统应用和自身,无法获取第三方应用数据。

  • 权限声明缺失:针对targetSdkVersion≥30的应用,必须额外声明权限或配置查询范围:

    • 若需要获取所有应用,需在Manifest中添加:
      <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
      
    • 若不想使用上述权限(避免Google Play审核限制),可通过<queries>标签指定要查询的应用范围,比如获取所有带桌面启动图标的应用:
      <queries>
          <intent>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
          </intent>
      </queries>
      

    WireGuard因targetSdkVersion较低,不受该权限限制,因此能正常获取所有第三方应用。

  • 验证步骤:

    • 检查应用的build.gradle中targetSdkVersion数值,确认是否≥30。
    • 添加对应权限或<queries>配置后重新编译测试。

内容的提问来源于stack exchange,提问作者aj3423

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:25:01