代码中AndroidManifest.xml的用户versionName值

Don*_*Gru 51 android android-manifest

AndroidManifest.xml包含应用程序的版本名称,例如

android:versionName="1.0"
Run Code Online (Sandbox Code Playgroud)

现在的问题是 - 在某种程度上可以在源代码中访问此版本名称,以便我可以在例如About中显示它Dialog吗?

Kon*_*rov 119

如果您使用ADT和Eclipse:

String version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Run Code Online (Sandbox Code Playgroud)

如果您使用Gradle,则有一种更简单的方法,因为它将数据放入BuildConfig中:

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

  • 对于单行代码而言,这太多了"getPackage"...... O_O (26认同)
  • 大!但有没有办法从xml文件中获取值(特别是将它用作`Preference`节点的`android:summary`)? (4认同)

DMH*_*DMH 38

Konstantin的答案(上图)是正确的,但是对于它的价值,我发现如果我没有捕获,我会遇到编译器错误NameNotFoundException,如下所示:

import android.content.pm.PackageManager.NameNotFoundException;
try {
    String version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
    Log.e("tag", e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)