Android の開発プロセスでは、サードパーティ製アプリをインストールできるかどうかを判断する際に、パッケージ名などのアプリの情報を判断する必要がある場合があります。 、インストールを許可しません。
では、アンインストールされたアプリケーションについて、アプリケーション関連の情報を取得するにはどうすればよいでしょうか? 実際、サードパーティの APK のパスがわかっていれば、アプリケーション情報を取得できます。
1. アプリケーションのパッケージ名を取得する
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;
}
2.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;
}
3. 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;
}
4.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;
}
5.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);
}