Get android:versionName manifest element in code
AndroidAndroid ManifestAndroid Problem Overview
I want to know how to parse the AndroidManifest.xml file in order to get the Application Version Number through code. android:versionName
Android Solutions
Solution 1 - Android
No need to parse the AndroidManifest.xml
file for this.
You can get this by using:
try
{
String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
}
catch (NameNotFoundException e)
{
Log.e(tag, e.getMessage());
}
Use this inside your onCreate()
method.
Solution 2 - Android
In case this is helpful to anyone else, you can also access @string
resources from AndroidManifest.xml like you can from other xml files.
So for example, in AndroidManifest.xml:
android:versionName="@string/app_versionName"
and in code:
string versionName = getResources().getString(R.string.app_versionName);
This way you don't need the (annoying, imo) try/catch statement. I'm not sure if this is an approved way of doing things, but it makes sense to me.
Solution 3 - Android
If you're using the Android Studio, the version name is available in the class BuildConfig. This class in generated at compile time:
String versionName = BuildConfig.VERSION_NAME;
This is the cleanest way retrieving the version name.
Solution 4 - Android
So far, i used the below code snippet from this article and successfully got the version code and version name from AndroidManifest.xml
/* Get android:versionName */
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
/* Get android:versionCode */
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;