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

jen*_*fer 68 android android-manifest

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

Vik*_*dar 144

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

你可以通过使用:

try
{
    String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
}
catch (NameNotFoundException e)
{
    Log.e(tag, e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

在你的onCreate()方法中使用它.


For*_*ntr 35

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

例如,在AndroidManifest.xml中:

android:versionName="@string/app_versionName"
Run Code Online (Sandbox Code Playgroud)

并在代码中:

string versionName = getResources().getString(R.string.app_versionName);
Run Code Online (Sandbox Code Playgroud)

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

  • 注意这个**lint警告消息**:***android:versionName不能是资源url,它必须是文字字符串*** (4认同)

fun*_*der 9

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

String versionName = BuildConfig.VERSION_NAME;
Run Code Online (Sandbox Code Playgroud)

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