Android 获取应用的icon、名字、版本号

来源:互联网 发布:微信消息模板php源码 编辑:程序博客网 时间:2024/06/15 05:16

Android 获取应用的icon、名字、版本号

1、获取应用的icon

代码如下:

/** * 根据包名和类名获取App的icon * * @param pkgName   包名 * @param className 类名 */public static Drawable getAppIcon(Context context, String pkgName, String className) {    // 查询某个包名下的应用个数    List<AppContent> 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<ResolveInfo> 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());}

上面实现了两个获取应用icon的方法,第一个方法多了className这个参数,该方法className参数的作用是当几个应用的包名一样时,我们可以用类名区分不同的应用,从而正确的获取出需要的应用的icon;第二个方法就没有className参数,如果几个应用的包名相同,那么它就只能随机的取出其中一个了,可能造成取出的icon并不是我们需要的,所以推荐使用第一种方法,虽然麻烦一点但是可以更加的准确。

2、获取应用的名字

代码如下:

/** * 根据包名和类名获取App的名字 * * @param pkgName   包名 * @param className 类名 */public static String getAppName(Context context, String pkgName, String className) {    // 查询某个包名下的应用个数    List<AppContent> 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<ResolveInfo> 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一样实现了两个方法,它们的区别也是和获取icon的一样,为了获取的名字更准确,推荐使用方法一。

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;}
原创粉丝点击