Androidアプリのicon、名前、バージョン番号を取得

7537 ワード

Androidアプリのicon、名前、バージョン番号を取得
1、アプリケーションのiconを取得する
コードは次のとおりです.
/**
 *          App icon
 *
 * @param pkgName     
 * @param className   
 */
public static Drawable getAppIcon(Context context, String pkgName, String className) {
    //             
    List findList = MainDbHelper.getInstance().getAppContentDao().findAppsFromPackage(pkgName);
    Drawable drawable;
    if (findList != null) {
        if (findList.size() == 1) {
            drawable = getAppIcon(context, pkgName);
            return drawable;
        } else if (findList.size() > 1) {
            PackageManager pm = context.getPackageManager();
            List resolveInfos = GetLaunchAppTool.getInstence(context).getLaunchApp();
            if (resolveInfos != null && resolveInfos.size() > 0) {
                for (ResolveInfo resolveInfo : resolveInfos) {

                    String pkg = resolveInfo.activityInfo.packageName;
                    if (!TextUtils.isEmpty(pkg) && pkg.equals(pkgName)) {

                        String clsName = resolveInfo.activityInfo.name;
                        if (clsName.equals(className)) {
                        drawable = resolveInfo.loadIcon(pm);
                        return drawable;
                        }
                    }
                }
            }
        }
    }

    drawable = getAppIcon(context, pkgName);
    return drawable;
}




/**
 *       App Icon
 *
 * @param pkgName   
 */
public static Drawable getAppIcon(Context context, String pkgName) {
    try {
        if (null != pkgName) {
            PackageManager pm = context.getPackageManager();
            ApplicationInfo info = pm.getApplicationInfo(pkgName, 0);
            return info.loadIcon(pm);
        }
    } catch (Exception e) {
         e.printStackTrace();
    }
    return ResourceManager.getDrawable(R.mipmap.ic_default, context.getTheme());
}

上記の2つのアプリケーションiconを取得する方法を実現し、第1の方法はclassNameというパラメータを多くし、この方法classNameパラメータの役割はいくつかのアプリケーションのパッケージ名が同じである場合、私たちはクラス名で異なるアプリケーションを区別することができ、それによって必要なアプリケーションのiconを正確に取得することができる.2つ目の方法はclassNameパラメータがありません.いくつかのアプリケーションのパッケージ名が同じであれば、ランダムに1つしか取り出すことができません.取り出すiconは私たちが必要としない可能性があります.だから、1つ目の方法をお勧めします.面倒ですが、もっと正確にすることができます.
2、アプリケーションの名前を取得する
コードは次のとおりです.
/**
 *          App   
 *
 * @param pkgName     
 * @param className   
 */
public static String getAppName(Context context, String pkgName, String className) {

    //             
    List findList = MainDbHelper.getInstance().getAppContentDao().findAppsFromPackage(pkgName);
    String label;
    if (findList != null) {
        if (findList.size() == 1) {
            return getAppName(context, pkgName);
        } else if (findList.size() > 1) {
            PackageManager pm = context.getPackageManager();
            List resolveInfos = GetLaunchAppTool.getInstence(context).getLaunchApp();
            if (resolveInfos != null && resolveInfos.size() > 0) {
                for (ResolveInfo resolveInfo : resolveInfos) {

                    String pkg = resolveInfo.activityInfo.packageName;
                    if (!TextUtils.isEmpty(pkg) && pkg.equals(pkgName)) {

                        String clsName = resolveInfo.activityInfo.name;
                        if (clsName.equals(className)) {
                            label = resolveInfo.loadLabel(pm) + "";
                            return label;
                        }
                    }
                }
            }
        }
    }

    label = getAppName(context, pkgName);
    return label;
}




/**
 *       App   
 *
 * @param pkgName   
 */
public static String getAppName(Context context, String pkgName) {
    PackageManager pm = context.getPackageManager();
    try {
        ApplicationInfo info = pm.getApplicationInfo(pkgName, 0);
        return info.loadLabel(pm).toString();

    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return "";
}

アプリケーション名を取得する方法はiconを取得する方法と同様に2つの方法を実現し、それらの違いもiconを取得する方法と同様に、取得した名前をより正確にするために、使用方法1を推奨する.
3、アプリケーションのバージョン番号を取得する
コードは次のとおりです.
/**
 *      
 *
 * @param context Context
 * @return    
 */
public static int getVersionCode(Context context) {
    PackageInfo pi;
    int code = -1;
    PackageManager pm = context.getPackageManager();
    try {
        pi = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_CONFIGURATIONS);
        code = pi.versionCode;
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return code;
}