如何获取我的应用程序版本

时间:2011-06-03 06:31:32

标签: android

有谁能告诉我如何在Android中获取应用程序版本?

11 个答案:

答案 0 :(得分:135)

这个page有一个关于如何从java中做到的提示:

PackageManager manager = context.getPackageManager();
PackageInfo info = manager.getPackageInfo(
    context.getPackageName(), 0);
String version = info.versionName;

另外,this link has official information on how to properly set up your application versioning

答案 1 :(得分:68)

我正在使用Android Studio,我意识到我可以使用一行代码来实现这一点。

/*version name*/
BuildConfig.VERSION_NAME

/*version code*/
BuildConfig.VERSION_CODE

<强>编辑:

如果您使用的是其他Android库,请确保从应用程序包中导入 BuildConfig 。这类似于自动生成的用于识别资源的R类。

答案 2 :(得分:12)

获取申请信息:

PackageManager manager = this.getPackageManager();
try {
   PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
   String packageName = info.packageName;
   int versionCode = info.versionCode;
   String versionName = info.versionName;
   } catch (NameNotFoundException e) {
   // TODO Auto-generated catch block
   }

答案 3 :(得分:12)

public int getVersion(Context context) {
        try {
            PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_META_DATA);
            return pInfo.versionCode;
        } catch (NameNotFoundException e) {
            return 0;
        }
    }
}

有关此link

的更多信息

答案 4 :(得分:5)

我发现最简单,最好的答案就是导入BuildConfig

import your.package.BuildConfig;

然后只是

String verName = BuildConfig.VERSION_NAME;
int verCode = BuildConfig.VERSION_CODE;

答案 5 :(得分:2)

在你(模块:app)gradle中定义版本名称和版本代码

defaultConfig {
        applicationId "com.sing.smart"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.1.0"
    }

<强>的versionCode

versionCode是用于轻松区分应用版本的整数值。

应用开发者必须在Android电子市场中发布应用更新时增加此值,以便确定用户是否使用旧版应用,并提供更新版本。

<强>的versionName

versionName是一个包含常规“发布版本”的字符串,如其他桌面应用程序中所示,例如“1.4.5”或“3.7”。

versionName只是一个“人类可读”的版本代码。

PackageInfo pinfo = getPackageManager().getPackageInfo(getPackageName(), 0);  
int versionNumber = pinfo.versionCode;  
String versionName = pinfo.versionName;

答案 6 :(得分:1)

如果您需要它用于脚本编写(不用于编程),您可以使用此命令:

 adb shell "pm dump com.example.your.package.name | grep \"versionCode\"" | awk '{print $1}' | awk -F '=' '{print $2}'

答案 7 :(得分:1)

int versionCode = BuildConfig.VERSION_CODE;

String versionName = BuildConfig.VERSION_NAME;

答案 8 :(得分:1)

如果你正在使用eclipse试试这个:

 PackageInfo packageInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
        String version = packageInfo.versionName;

在Android Studio中:

int versionCode = BuildConfig.VERSION_CODE;

确保您在模块级build.gradle文件

中有豪宅版本代码

答案 9 :(得分:0)

在Nativescript(使用Typescript)上,可以这样做:

import {Observable} from 'data/observable';
import * as applicationModule from 'application'

export class AboutViewModel extends Observable {
    public version: string;

    constructor() {
        super();
        let manager = applicationModule.android.context.getPackageManager();
        let info = manager.getPackageInfo(applicationModule.android.context.getPackageName(), 0);
        this.version = info.versionName;
    }
}

答案 10 :(得分:0)

在科特林:

fun getAppVersionName(context: Context): String {
        var appVersionName = ""
        try {
            appVersionName =
                context.packageManager.getPackageInfo(context.packageName, 0).versionName
        } catch (e: PackageManager.NameNotFoundException) {
            e.printStackTrace()
        }
        return appVersionName
    }



fun getAppVersionCode(context: Context): Long {
        var appVersionCode = 0L
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                appVersionCode =
                    context.packageManager.getPackageInfo(context.packageName, 0).longVersionCode
            }
            else{
                appVersionCode =
                    context.packageManager.getPackageInfo(context.packageName, 0).versionCode.toLong()
            }
        } catch (e: PackageManager.NameNotFoundException) {
            e.printStackTrace()
        }
        return appVersionCode
    }