在代码中获取android:versionName清单元素

Get android:versionName manifest element in code

我想知道如何解析AndroidManifest.xml文件,以便通过代码获取应用程序版本号。安卓的versionName


无需为此解析AndroidManifest.xml文件。

你可以通过使用:

1
2
3
4
5
6
7
8
try
{
    String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
}
catch (NameNotFoundException e)
{
    Log.e(tag, e.getMessage());
}

onCreate()方法中使用它。


如果这对其他人有帮助,您也可以从其他xml文件中访问AndroidManifest.xml中的@string资源。

例如,在AndroidManifest.xml中:

1
android:versionName="@string/app_versionName"

并在代码中:

1
string versionName = getResources().getString(R.string.app_versionName);

这样你就不需要(恼人的,imo)try / catch语句。 我不确定这是否是一种经过批准的做事方式,但这对我来说很有意义。


如果您使用的是Android Studio,则BuildConfig类中提供了版本名称。 这个类在编译时生成:

1
String versionName = BuildConfig.VERSION_NAME;

这是检索版本名称最干净的方法。


到目前为止,我使用了本文中的以下代码片段,并成功从AndroidManifest.xml获取了版本代码和版本名称

1
2
3
4
5
/* Get android:versionName */
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;

/* Get android:versionCode */
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;