Androidアプリのicon、名前、バージョン番号を取得
7537 ワード
Androidアプリのicon、名前、バージョン番号を取得
1、アプリケーションのiconを取得する
コードは次のとおりです.
上記の2つのアプリケーションiconを取得する方法を実現し、第1の方法はclassNameというパラメータを多くし、この方法classNameパラメータの役割はいくつかのアプリケーションのパッケージ名が同じである場合、私たちはクラス名で異なるアプリケーションを区別することができ、それによって必要なアプリケーションのiconを正確に取得することができる.2つ目の方法はclassNameパラメータがありません.いくつかのアプリケーションのパッケージ名が同じであれば、ランダムに1つしか取り出すことができません.取り出すiconは私たちが必要としない可能性があります.だから、1つ目の方法をお勧めします.面倒ですが、もっと正確にすることができます.
2、アプリケーションの名前を取得する
コードは次のとおりです.
アプリケーション名を取得する方法はiconを取得する方法と同様に2つの方法を実現し、それらの違いもiconを取得する方法と同様に、取得した名前をより正確にするために、使用方法1を推奨する.
3、アプリケーションのバージョン番号を取得する
コードは次のとおりです.
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;
}