Reputation: 837
Can anyone tell me how to get the application version in Android?
Upvotes: 57
Views: 83627
Reputation: 320
here is how you can do it
String versionName = BuildConfig.VERSION_NAME;
String release = Build.VERSION.RELEASE;
int sdkVersion = Build.VERSION.SDK_INT;
Make sure to add any missing part from build.gradle(app)
android {
namespace = "com.your.www.package"
compileSdk = 34
buildFeatures{
buildConfig = true
}
defaultConfig {
applicationId = "com.your.www.package"
minSdk = 21
targetSdk = 34
versionCode = 1
versionName = "1.0"
}
}
Upvotes: 0
Reputation: 2233
If you are using the latest build gradle 8.0.0 or above in build.gradle (project level) like below
classpath 'com.android.tools.build:gradle:8.0.0'
First, add below code in build.gradle(app module) within android block, and rebuild Project
android {
buildFeatures {
buildConfig = true
}
}
then you can get version code and version name programmatically from your activity or fragment as follows:
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;
Upvotes: 3
Reputation: 3268
In your (Module: app) gradle define the version name and version code
defaultConfig {
applicationId "com.sing.smart"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.1.0"
}
versionCode
The versionCode is an integer value used to easily differentiate between app versions.
App developers must increment this value when they release updates to their apps in Android Market, so it can determine if users are using an old version of the app, and offer them to update it.
versionName
The versionName is a string containing a regular “release version” as seen in other desktop applications, such as “1.4.5” or “3.7”.
The versionName is just a “human readable” version code.
PackageInfo pinfo = getPackageManager().getPackageInfo(getPackageName(), 0);
int versionNumber = pinfo.versionCode;
String versionName = pinfo.versionName;
Upvotes: 2
Reputation: 7077
Java
String versionCode = String.valueOf(BuildConfig.VERSION_CODE);
String versionName = String.valueOf(BuildConfig.VERSION_NAME);
Kotlin
val versionCode = BuildConfig.VERSION_CODE
val versionName = BuildConfig.VERSION_NAME
Upvotes: 1
Reputation: 157
If you are using eclipse try this:
PackageInfo packageInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String version = packageInfo.versionName;
In Android Studio :
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;
make sure you have mansion version code in your module-level build.gradle file
Upvotes: 4
Reputation: 583
In kotlin :
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
}
Upvotes: 0
Reputation: 408
The easiest and best answer I found is to just import your BuildConfig
import your.package.BuildConfig;
then just
String verName = BuildConfig.VERSION_NAME;
int verCode = BuildConfig.VERSION_CODE;
Upvotes: 10
Reputation: 59111
This page has a tips on how to do it from java:
PackageManager manager = context.getPackageManager();
PackageInfo info = manager.getPackageInfo(
context.getPackageName(), 0);
String version = info.versionName;
Also, this link has official information on how to properly set up your application versioning.
Upvotes: 151
Reputation: 675
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;
Upvotes: 1
Reputation: 2459
On Nativescript (with Typescript) one can do like this:
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;
}
}
Upvotes: 0
Reputation: 5574
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;
}
}
}
More info on this link
Upvotes: 14
Reputation: 262
If you need it for scripting purposes (not for programming) you can use this command:
adb shell "pm dump com.example.your.package.name | grep \"versionCode\"" | awk '{print $1}' | awk -F '=' '{print $2}'
Upvotes: 1
Reputation: 2009
I am using Android Studio, I realized I could use one line code to get this.
/*version name*/
BuildConfig.VERSION_NAME
/*version code*/
BuildConfig.VERSION_CODE
Edited:
If you are using other android libraries, make sure you import BuildConfig from your application package. This is similar to the automatically generated R class for identifying resources.
Upvotes: 75
Reputation: 128428
To get application information:
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
}
Upvotes: 12