【发布时间】:2011-06-24 19:26:13
【问题描述】:
我想知道如何解析 AndroidManifest.xml 文件以通过代码获取应用程序版本号。 android:versionName
【问题讨论】:
-
如果您使用 Gradle,您可以使用
BuildConfig.VERSION_NAME获取应用程序的versionName。在这里查看答案:stackoverflow.com/a/28352130/293280
我想知道如何解析 AndroidManifest.xml 文件以通过代码获取应用程序版本号。 android:versionName
【问题讨论】:
BuildConfig.VERSION_NAME 获取应用程序的 versionName。在这里查看答案:stackoverflow.com/a/28352130/293280
无需为此解析AndroidManifest.xml 文件。
您可以通过以下方式获得:
try
{
String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
}
catch (NameNotFoundException e)
{
Log.e(tag, e.getMessage());
}
在您的 onCreate() 方法中使用它。
【讨论】:
Http Get 请求,并在此请求的参数中发送此值。在您的服务器上,您需要处理该请求并比较该应用程序版本值。如果大于客户端应用程序,则作为响应向他/她发送一个链接以下载该应用程序的新版本。
如果这对其他人有帮助,您还可以像访问其他 xml 文件一样从 AndroidManifest.xml 访问 @string 资源。
例如,在AndroidManifest.xml中:
android:versionName="@string/app_versionName"
在代码中:
string versionName = getResources().getString(R.string.app_versionName);
这样你就不需要(烦人的,imo)try/catch 语句。我不确定这是否是一种被认可的做事方式,但这对我来说是有意义的。
【讨论】:
到目前为止,我使用this文章中的以下代码sn-p,并成功获得了AndroidManifest.xml中的版本代码和版本名称
/* Get android:versionName */
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
/* Get android:versionCode */
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
【讨论】:
如果您使用的是 Android Studio,则版本名称在类 BuildConfig 中可用。这个类在编译时生成:
String versionName = BuildConfig.VERSION_NAME;
这是检索版本名称的最简洁方式。
【讨论】: