android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...
android - 如何从App的(布局)XML变量中获取Manifest版本号?
我想有一种方法在代码的主要部分引用项目的清单版本号。 到目前为止我一直在做的是将String XML文件中的版本号链接到清单(@ string / Version)。 我想做的是反过来做,将字符串XML变量链接到清单中的版本。 原因? 我只想在一个位置更改清单文件中的版本号。 有没有办法做到这一点? 谢谢!
8个解决方案
354 votes
我相信这里已经回答了。
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
要么
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
Konstantin Burov answered 2019-04-13T21:14:14Z
97 votes
没有办法直接获得版本,但有两种解决办法可以完成。
版本可以存储在资源字符串中,并通过以下方式放入清单:
android.R.string.version
可以创建自定义视图,并将其放入XML中。 视图将使用它来指定名称:
android.R.string.version
这些解决方案中的任何一个都允许将版本名称放在XML中。 不幸的是,没有一个很好的简单解决方案,如android.R.string.version或类似的东西。
PearsonArtPhoto answered 2019-04-13T21:15:06Z
52 votes
您可以在XML资源中使用@string/versionName,例如活动布局。 首先在app/src/main/res/xml/preferences.xml中创建一个字符串资源,并在android节点中使用以下代码段:
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
所以整个@string/versionName文件内容可能如下所示:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '24.0.0 rc3'
defaultConfig {
applicationId 'com.example.myapplication'
minSdkVersion 15
targetSdkVersion 23
versionCode 17
versionName '0.2.3'
jackOptions {
enabled true
}
}
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
}
然后,您可以在XML中使用@string/versionName。 Android Studio会将其标记为红色,但应用程序将编译没有问题。 例如,这可以在app/src/main/res/xml/preferences.xml中使用:
android:title="About"
android:key="pref_key_about">
android:key="pref_about_build"
android:title="Build version"
android:summary="@string/versionName" />
Arun Shankar answered 2019-04-13T21:15:44Z
15 votes
我通过扩展Preference类解决了这个问题。
package com.example.android;
import android.content.Context;
import android.preference.Preference;
import android.util.AttributeSet;
public class VersionPreference extends Preference {
public VersionPreference(Context context, AttributeSet attrs) {
super(context, attrs);
String versionName;
final PackageManager packageManager = context.getPackageManager();
if (packageManager != null) {
try {
PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
versionName = packageInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
versionName = null;
}
setSummary(versionName);
}
}
}
然后在我的首选项XML:
seastland answered 2019-04-13T21:16:15Z
9 votes
我使用BuildConfig.VERSION_NAME.toString();。从packageManager获取它有什么区别?
对不起,没有基于XML的解决方案对我有用。
Mullazman answered 2019-04-13T21:16:48Z
2 votes
您无法从XML中使用它。
您需要在XML中扩展您正在使用的小部件,并添加逻辑以使用Konstantin Burov的答案中提到的内容来设置文本。
Macarse answered 2019-04-13T21:17:22Z
1 votes
如果您使用的是gradle,则可以使用build.gradle文件在编译时将值添加到xml资源中。
示例代码提取自:[https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf]
buildTypes {
debug {
versionNameSuffix ".debug"
resValue "string", "app_version", "${defaultConfig.versionName}${versionNameSuffix}"
}
release {
resValue "string", "app_version", "${defaultConfig.versionName}"
}
}
现在根据需要在XML中使用.debug
在调试模式下,它将在链接文章中描述的版本名称中添加.debug。
CrandellWS answered 2019-04-13T21:18:07Z
-3 votes
游戏后期,但你可以通过使用?android:attr无需@string/xyz
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="?android:attr/versionName"
/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="?android:attr/versionCode"
/>
ddrscott answered 2019-04-13T21:18:33Z
android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...相关推荐
- android xml获取指定,android:如何从xml文件中获取信息?
我得到一个程序,从一个链接的服务器获取天气.我已经做了一些将字符串结合到URL的字符串.我现在需要从XML文件中获取信息.android:如何从xml文件中获取信息? 这是我的代码:(我更换了,为了安 ...
- 从Dicom的xml文件中获取结节坐标并生成mask
使用数据集:LIDC 代码作用:从xml文件中获取结节坐标并生成mask 备注:没有学过python,都是边写边查,有的地方可能看起来不简洁,请自行优化 21-05-13 Debug 在我训练完Une ...
- Android RxJava操作符的学习---组合合并操作符---从磁盘或内存缓存中获取缓存数据
1. 需求场景 2. 功能说明 对于从磁盘 / 内存缓存中 获取缓存数据 的功能逻辑如下: 3. 具体实现 详细请看代码注释 // 该2变量用于模拟内存缓存 & 磁盘缓存中的数据String ...
- php获取百度真实网址,怎么从百度网盘的外链中获取真实的下载地址
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一步 http://pan.baidu.com/share/list?channel=chunlei&clienttype=0&web= ...
- 阿里云视频上传视频获取进度条问题(使用session方案,获取进度一直为0的解决方案)补充:前后端分离项目中获取进度解决方案
1.场景描述: 之前用阿里云上传视频,前端反应上传视频经常出现获取视频url失败问题.但是接口我测过很多遍都是没有问题的.后台这边提供了一个视频上传的接口返回一个videoId,还提供了一个根据vid ...
- React中 useState在合成事件中是异步的,怎么获取到useState 设置后的最新值,或者说setState中获取到最新值
useState 在合成事件中是异步的 合成时间是什么呢 合成事件: 简单来说 比如onClick,或者 onChange 或者说是 Input之类的事件 所以一个情景是这样的 当你在onClick ...
- c#获取对象的唯一标识_关于uniqueidentifier:在C#中获取唯一标识符的最佳方法...
本问题已经有最佳答案,请猛点这里访问. 之前我曾问过类似的问题,但现在我减少了一些有关我所需要的限制. 我需要使用C#在计算机上高效地找到唯一标识符. 只要易于检索,它在任何特定计算机上都应始终保持不 ...
- php 获取sql字段名,php – 使用DISTINCT和UNION在SQL查询中获取字段名称
我有以下查询: SELECT DISTINCT(uniq) FROM ( SELECT sex AS uniq FROM type4 UNION SELECT fason AS uniq FROM t ...
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | multiple-dex-core 依赖库开发 | 配置元数据 | 获取 apk 文件并准备相关目录 )
文章目录 一.multiple-dex-core 依赖库作用 二.配置目录元数据 三.multiple-dex-core 代理 Application 四.获取 apk 文件并准备相关目录 五.相关代 ...
最新文章
- linux openwrt插件,OpenWrt添加软件包(一)
- 大图剪切工具,大图分割工具
- lisp java_ai lisp java
- TCPDUMP/LIBPCAP 1-由零开始
- ML/DL常用评估方法
- 各种编程技术中的$符的使用
- python写个验证码
- Atitit 四种自动机 fsm pda 目录 1. 自动机可分为有限自动机、后进先出自动机、线性有界自动机、图灵机等几种。它们对语言的识别能力各不相同。	2 1.1. 抽象自动机的理论。	2 1.
- 智能优化算法论文python复现,附代码--鲸鱼优化算法(WOA)-1
- Typora免费版下载【Mac、Windows】
- lisp 计算三点的夹角_计算三点所形成的夹角的三种方法
- mysql openxml_OpenXML SDK2.0初窥
- php翻译英文 保留格式,页面如何实现自动翻译成英文
- NR、EN-DC等名词解释
- Java 微服务实践
- 模仿猫眼电影App一个动画效果
- iOS结构化并发---喵神出品。
- 微信扫码登陆(JAVA)
- 和风天气 (简易版)
- 群晖(Synology)NAS服务器硬盘莫名丢失存储空间的解决方法
热门文章
- [Linux]Ubuntu下用apt-get安装的应用程序位置
- 【设计模式系列】行为型之策略模式
- ubuntu 16.04下安装mysql
- ERROR: Could not install packages due to an OSError: [Errno 28] 设备上没有空间
- matplotlib之scatter
- collections模块的Counter类
- VS2010与SVN
- liunx下NetworkManager导致网卡不能启动
- 泰顺县人事劳动社会保障局灾备集成项目招标
- 转贴:Google提供网站恶意软件侦测服务