【问题标题】:Get Split APK Info in Android在 Android 中获取拆分 APK 信息
【发布时间】:2021-11-03 05:23:52
【问题描述】:

我有一个 3p 应用商店应用,它可以安装其他应用。在我的应用中,支持安装单个 APK 和拆分 APK。

对于具有拆分 APK 的应用,在安装期间,我只安装所需的 APK,就像设备上仅安装所选语言的 APK。

现在,当设备语言发生变化时,我想为我的应用安装的所有应用安装新的语言 APK。在触发安装之前,我需要先检查该语言的 APK 是否已经安装,或者针对特定包名称安装了哪些所有 APK。

在 Android 中,如果安装了某些语言 APK 或有关所有已安装 APK 的信息,我没有找到任何 API 可以提供给我。有什么方法可以获取这些信息?

Edit-1:我无法使用 Play 核心库。我正在寻找一种使用 Android 类的方法。

【问题讨论】:

  • 请明确说明,如果安装了应用程序,您是否想获取拆分信息,或者您想从尚未安装的 xapk、apks 等拆分文件中获取信息?请让我知道,以便我可以为您添加答案。我有两种方法。谢谢...

标签: android google-play android-app-bundle


【解决方案1】:

这是不可能的。 使用您已安装的应用程序的包名称,您可以从 PackageInfo.#applicationInfo 获取所有拆分的 APK,但不提供任何额外信息。

Playcore 有一些类,例如 SplitInstallManager,它具有 getInstalledModules、getInstalledLanguages 等方法,可用于获取已安装的 APK,但不确定您是否也可以获取有关其他应用的信息。

【讨论】:

    【解决方案2】:

    代码:

    public static boolean isConfigInstalled(PackageManager pm, String pkg, String conf) throws PackageManager.NameNotFoundException
    {
        // get application info for installed app
        ApplicationInfo ai=pm.getApplicationInfo(pkg, 0);
        
        // get installed split's Names
        String[] sn=ai.splitNames;
    
        // check whether if it's really split or not
        if (sn != null && sn.length > 0)
        {
            // search installed splits
            for(String n:sn){
                // check whether is the one required
                if(n.equals("config." + conf)){
                    // yes, it's installed!
                    return true;
                }
            }
        }
        // couldn't find!
        return false;
    }
    

    使用方法:

    只需传递您通过context.getPackageManager() 获得的包管理器以及应用的包名语言代码

    示例:

            PackageManager pm=getPackageManager();
            String pkg="com.snapchat.android";
            String languageCode="ur";
            if(isConfigInstalled(pm, pkg, languageCode)){
                System.out.println("Snapchat has Urdu Installed!");
            }else{
                System.out.println("Snapchat doesn't has Urdu Installed!");
            }
    

    输出:

        Snapchat has Urdu Installed!
    

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多