You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:27:30