首页 > 解决方案 > Android,如何提取系统应用程序并执行一些检查

问题描述

我有一个数组中的appName列表,我需要一个系统应用程序列表+已安装应用程序,然后需要将它与appName中的每个应用程序进行比较,如果系统应用程序列表中的任何应用程序+已安装与appName中的应用程序匹配,那么我们如果不同,需要检查他们的版本,然后采取一些措施。

我从编写以下代码开始:

private List<ApplicationInfo> getInstallapp(){

    final PackageManager pm = context.getPackageManager();

    List<ApplicationInfo> installedApps;
    try {
        installedApps = pm.getInstalledApplications(0);
        pm.getPackageInfo(getPackageName(),0);
    } catch (final PackageManager.NameNotFoundException e) {
        installedApps = null;
    }

    for(int i=0; i<installedApps.size();i++){
        Log.d("Apps", "Apps are: "+installedApps.get(i).toString());
    }
    Log.d("System apps", "System apps are: " +installedApps);
    return installedApps;
}

但现在我被卡住了,因为我正在以以下格式获取每个应用程序

ApplicationInfo{53a4a03 com.android.providers.contacts}

我怎样才能得到版本号。每个应用程序以及字符串格式的每个应用程序,以便我可以将其与列表中的应用程序进行比较。

请帮助我前进。

标签: android

解决方案


我不知道你想要哪个(版本代码或版本名称),但对于任何一种情况,调整你的 for 循环以获得每个

        for(int i=0; i<installedApps.size();i++){
        PackageInfo pkgInfo=pm.getPackageInfo(installedApps.get(i).packageName,0);

                //For versionCode

     int versionCode=pkgInfo.versionCode;

          //For versionName

        String versionName=pkgInfo.versionName;

        //App name
        String appName=pm.getApplicationLabel(pm.getApplicationInfo(installedApps.get(i).packageName, 0));  

   Log.d("Apps", "Apps are: "+installedApps.get(i).toString()+"version code "+versionCode+" version name "+versionName+" app name "+appName);
                }

推荐阅读