如何在Android应用内部查询Manifest中声明的versionCode?
Android应用内获取当前应用versionCode的简便方法
不用手动指定包名,有两种简便方式可以获取当前运行应用的versionCode:
方式一:通过PackageManager + Context自动获取(运行时获取,通用场景)
借助Context.getPackageName()自动获取当前应用的包名,无需硬编码,结合PackageManager获取PackageInfo后提取versionCode,同时适配不同Android版本的API差异:
Java实现
import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; public class AppUtils { public static int getAppVersionCode(Context context) { try { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { return (int) packageInfo.getLongVersionCode(); } else { return packageInfo.versionCode; } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return -1; } } }
Kotlin实现
import android.content.Context import android.content.pm.PackageManager import android.os.Build fun Context.getAppVersionCode(): Int { return try { val packageInfo = packageManager.getPackageInfo(packageName, 0) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { packageInfo.longVersionCode.toInt() } else { packageInfo.versionCode } } catch (e: PackageManager.NameNotFoundException) { e.printStackTrace() -1 } }
方式二:通过BuildConfig直接获取(编译期常量,更简便)
如果你的项目使用Android Gradle Plugin 7.0+(默认开启BuildConfig生成),可以直接通过编译期生成的BuildConfig类获取versionCode,无需运行时调用PackageManager:
Java/Kotlin通用
// Java int versionCode = BuildConfig.VERSION_CODE;
// Kotlin val versionCode = BuildConfig.VERSION_CODE
注意:多模块项目中,要确保调用的是应用模块的BuildConfig,而非其他库模块的。
内容的提问来源于stack exchange,提问作者user149408
相关产品推荐
相关产品推荐

