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

Android 如何获取指定包名已安装Split APK信息(不可用Play Core库)

原生实现获取已安装Split APK信息方案

核心实现逻辑

Android 5.0(API 21)及以上系统原生提供PackageManager相关接口可直接查询指定包名的所有已安装拆分APK信息,无需引入第三方依赖,也不需要调用Play Core库。

核心代码示例

PackageManager packageManager = context.getPackageManager();
String targetPkg = "你要查询的应用包名";
try {
    // 传入GET_SPLITS标记即可获取拆分APK相关信息
    PackageInfo pkgInfo = packageManager.getPackageInfo(targetPkg, PackageManager.GET_SPLITS);
    // splitNames为null代表当前应用为单APK安装,无拆分包
    if (pkgInfo.splitNames == null || pkgInfo.splitNames.length == 0) {
        // 单APK应用,无需安装额外语言拆分包
        return;
    }
    // 遍历所有已安装拆分APK
    for (int i = 0; i < pkgInfo.splitNames.length; i++) {
        String splitName = pkgInfo.splitNames[i];
        // 语言类拆分APK统一遵循 config.<语言标识>的命名规则
        if (splitName.startsWith("config.")) {
            String splitLangTag = splitName.replaceFirst("config\\.", "");
            // 此处将splitLangTag和目标新语言标识做匹配即可判断对应语言拆分包是否已安装
            // 匹配逻辑可根据你应用商店分发拆分包的命名规则调整
        }
        // 额外可用参数:
        // pkgInfo.splitCodePaths[i] 对应拆分APK的本地存储路径
        // pkgInfo.splitRevisionCodes[i] 对应拆分APK的版本号
    }
} catch (PackageManager.NameNotFoundException e) {
    // 目标包名未安装,异常处理
}

注意事项

  • 该接口从API 21开始全版本兼容,无需额外权限,仅需要查询的应用包名已安装即可正常获取数据。
  • 语言拆分包的命名规则由Android平台统一规范,常见格式为:
    • 通用语言层级:config.zh(适配所有中文地区)
    • 地区细分层级:config.zh-rCN(仅适配简体中文中国大陆地区)
      可根据你应用商店分发拆分APK的实际命名规则做匹配逻辑调整。
  • 若需获取当前系统新的语言标识,可通过Locale.getDefault().toLanguageTag()获取系统当前语言标签,和拆分包的语言部分做对应匹配即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:48:04