I want to know how to parse the AndroidManifest.xml file in order to get the Application Version Number through code. android:versionName
4 Answers
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.
2 Comments
Http Get request from your application and send this value in parameters of this request. And on your server you need to handle that request and compare that application version values. If greater than the client app then in response send him/her a link to download new version of that application.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.
3 Comments
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.
1 Comment
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;
versionNamewithBuildConfig.VERSION_NAMEif you're using Gradle. See the answer here: stackoverflow.com/a/28352130/293280