一.利用资源文件配置字符串
1.概述
**好处:**将字符串配置到配置文件中,可以在修改字符串内容时不需要重新编译代码
2.代码获取
(1)概述
使用content类中的getString()
方法就可以从配置文件获取字符串了。使用R.string.名字
作为参数就能获取了。
(2)示例
代码:
getString(R.string.app_name);
对应配置文件字符串:
目录:/res/values/strings.xml
ActivityStudy
二.利用元数据传递配置信息
1.概述
(1)介绍
元数据是通过meta-data
标签定义在清单文件内的数据,后续需要使用时可以通过定义时指定的name
属性,获取其的value
值。一般用于放置第三方服务的Token值
(2)元数据定义格式
定义在清单文件对于主活动配置的作用域名内
2.代码获取
(1)步骤
- 调用
getPackageManager
方法获取当前应用的包管理器 - 调用包管理器的
getActivityInfo
方法获取当前活动的信息对象- 参数1:当前活动的主键名称 -> 使用
getComponentName()
获取 - 参数2:获取信息对象的类型
- 参数1:当前活动的主键名称 -> 使用
- 调用活动信息对象的
metaData
获取Bundle包裹对象 - 通过包裹对象的
getString
方法就可以获得指定名称的参数值了
(2)示例
**获取的代码:**会报异常,使用try..catch
捕获即可
下面的Value就已经成功从清单文件中定义的元数据
test_string
中获取到数据了
//获取应用包管理器
PackageManager pm = getPackageManager();
//从应用包管理器中获取当前的活动信息
ActivityInfo info = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
//获取当前活动附加的元数据信息
Bundle bundle = info.metaData;
//通过键"test_string"从元数据中获取其对应的值
String value = bundle.getString("test_string");
对应清单文件AndroidManifest.xml
内的值:
三.从配置文件中读元数据值
1.概述
(1)介绍
元数据的meta-data标签除了前面说到的name属性和value属性,还拥有resource属性,该属性可指定一个XML文件,表示以该文件的内容作为元素据的值
(2)格式
元文件名就保持格式不要动吧,至于配置文件的路径以实际为准
3.实例-配置快捷方式
(1)步骤
- 在res/values/strings.xml中添加各个菜单项名称的字符串配置
- 在res目录下创建xml并新建shortcuts.xml,在该文件中填入各组菜单项的快捷方式定义(每个菜单对应哪个活动页面)
- 给activity节点注册元数据的快捷菜单配置
(2)实际
**1.**在res/values/strings.xml中添加各个菜单项名称的字符串配置
主要在于为shortcuts文件中的Label提供字符串信息,因为其内不能使用硬编码,只能从这里映射过去
first
页面跳转
second
长按跳转
**2.**在res目录下创建xml并新建shortcuts.xml,在该文件中填入各组菜单项的快捷方式定义
- 配置菜单项目
属性 | 说明 |
---|---|
shortcutId | 快捷方式的编号 |
enabled | 是否启用快捷方式。true表示启用,false表示禁用 |
icon | 快捷菜单左侧的图标 |
shortcutShortLabel | 快捷菜单的短标签 |
shortcutLongLabel | 快捷菜单的长标签。优先展示长标签的文本,长标签放不下时才展示短标签的文本 |
- 指定要跳转的活动
属性/标签 | 说明 |
---|---|
action | 意图类型 |
targetPackage | 固定为当前APP的完整包名 |
targetClass | 指定该菜单项要跳转的活动的完整路径 |
categories标签 | 固定值为:android:name="android.shortcut.conversation" |
-
完整实例:
注释前的是菜单项目基本信息的设置,注释下就是要跳转的活动的设置
**3.**在清单文件中补充元数据配置:
包名应该是固定的,至于
android:resource
的路径,就以上面的xml文件实际位置为准
指明元数据的名字以其其所在位置