package cgeo.geocaching.utils; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.support.annotation.Nullable; public class Version { private Version() { // Do not instantiate } private static PackageInfo getPackageInfo(final Context context) { try { return context.getPackageManager().getPackageInfo(context.getPackageName(), 0); } catch (final NameNotFoundException e) { Log.e("Version.getPackageInfo: unable to get package information", e); return null; } } /** * Get the current package version name if available. * * @param context the context to use * @return the current package version name, or "" if unavailable */ public static String getVersionName(final Context context) { final PackageInfo packageInfo = getPackageInfo(context); return packageInfo != null ? packageInfo.versionName : ""; } /** * Get the current package version code if available. * * @param context the context to use * @return the current package version code, or -1 if unavailable */ public static int getVersionCode(final Context context) { final PackageInfo packageInfo = getPackageInfo(context); return packageInfo != null ? packageInfo.versionCode : -1; } /** * Get the current package installer if available. * * @param context the context to use * @return the current package installer */ @Nullable public static String getPackageInstaller(final Context context) { return context.getPackageManager().getInstallerPackageName(context.getPackageName()); } }