在代码中获取 android:versionName 清单元素
Posted
技术标签:
【中文标题】在代码中获取 android:versionName 清单元素【英文标题】:Get android:versionName manifest element in code 【发布时间】:2011-06-24 19:26:13 【问题描述】:我想知道如何解析 androidManifest.xml 文件以通过代码获取应用程序版本号。 android:versionName
【问题讨论】:
如果您使用 Gradle,您可以使用BuildConfig.VERSION_NAME
获取应用程序的 versionName
。在这里查看答案:***.com/a/28352130/293280
【参考方案1】:
无需为此解析AndroidManifest.xml
文件。
您可以通过以下方式获得:
try
String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
catch (NameNotFoundException e)
Log.e(tag, e.getMessage());
在您的 onCreate()
方法中使用它。
【讨论】:
我需要将我的应用程序 android:versionName 与下载中的应用程序进行比较。我的应用程序不在 android 市场中。我需要将我的手机中的 versionName 与站点中可用的版本名进行比较,以获取新版本并显示更新它的警报。如何获取应用程序的新版本号在网站上 @jebbifer:只需从您的应用程序创建一个Http Get
请求,并在此请求的参数中发送此值。在您的服务器上,您需要处理该请求并比较该应用程序版本值。如果大于客户端应用程序,则作为响应向他/她发送一个链接以下载该应用程序的新版本。【参考方案2】:
如果这对其他人有帮助,您还可以像访问其他 xml 文件一样从 AndroidManifest.xml 访问 @string
资源。
例如,在AndroidManifest.xml中:
android:versionName="@string/app_versionName"
在代码中:
string versionName = getResources().getString(R.string.app_versionName);
这样你就不需要(烦人的,imo)try/catch 语句。我不确定这是否是一种被认可的做事方式,但这对我来说是有意义的。
【讨论】:
很酷的解决方案!不要直接从清单中编辑字符串,而是使用字符串值并对其进行编辑,这样您的代码就不会改变!我喜欢 ! +2:P 请注意这条 lint 警告消息:android:versionName 不能是资源 url,它必须是文字字符串 耻辱。这条 lint 消息一定是最近出现的;我不记得我在做这个的时候看到过它。【参考方案3】:到目前为止,我使用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;
【讨论】:
请扩展您的答案,因为仅链接的答案在 SO 上不被认为是好的。【参考方案4】:如果您使用的是 Android Studio,则版本名称在类 BuildConfig 中可用。这个类在编译时生成:
String versionName = BuildConfig.VERSION_NAME;
这是检索版本名称的最简洁方式。
【讨论】:
以上是关于在代码中获取 android:versionName 清单元素的主要内容,如果未能解决你的问题,请参考以下文章