在Android开发过程中,在做是否可安装第三方应用的功能的时候可能需要先判断应用的信息,比如包名,当通过apk的包名判断到该apk不能够被安装的时候,我们将不允许安装。
那么对于未安装的应用,我们如何获取其应用相关信息呢,其实知道了该第三方apk的路径我们就可以获取其应用信息了。
一、获取应用包名
public String getPackageName(Context context, String apkPath) {
PackageManager pm = context.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(apkPath,
PackageManager.GET_ACTIVITIES);
if (info != null) {
ApplicationInfo appInfo = info.applicationInfo;
try {
return appInfo.packageName;
} catch (OutOfMemoryError e) {
Log.e("Apk PackageName", e.toString());
}
}
return null;
}
二、获取APK名称
public String getApkName(Context context, String apkPath) {
PackageManager pm = context.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(apkPath,
PackageManager.GET_ACTIVITIES);
if (info != null) {
ApplicationInfo appInfo = info.applicationInfo;
String apkName = appInfo.loadLabel(pm).toString();
try {
return apkName;
} catch (OutOfMemoryError e) {
Log.e("Apk Name", e.toString());
}
}
return null;
}
三、获取APK版本号
public String getApkVersion(Context context, String apkPath) {
PackageManager pm = context.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(apkPath,
PackageManager.GET_ACTIVITIES);
if (info != null) {
ApplicationInfo appInfo = info.applicationInfo;
String apkVersion = info.versionName == null ? "0" : info.versionName;
try {
return apkVersion;
} catch (OutOfMemoryError e) {
Log.e("Apk Version", e.toString());
}
}
return null;
}
四、获取APK图标
public static Drawable getApkIcon(Context context, String apkPath) {
PackageManager pm = context.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(apkPath,
PackageManager.GET_ACTIVITIES);
if (info != null) {
ApplicationInfo appInfo = info.applicationInfo;
try {
return appInfo.loadIcon(pm);
} catch (OutOfMemoryError e) {
Log.e("Apk Icon", e.toString());
}
}
return null;
}
五、安装APK
private void installAPK(Context context, String apkPath) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse("file://" + apkPath),
"application/vnd.android.package-archive");
context.startActivity(intent);
}