赞
踩
AndroidManifest.xml中可以添加meta-data标签来定义一些配置数据,app中可以读取这些数据。
meta-data标签定义了一组键值对,分别为name和value。虽然meta-data没有定义数据类型的属性,但实际上meta-data数据是有数据类型的,而这个类型是由value的数据自动推导出来的。常用的类型如下:纯数字就属于int类型,带有非数字的字符就属于String类型,如果字符串是true或false就属于boolean类型。
举例如下:
AndroidManifest.xml中定义:
- <application>
- <meta-data
- android:name="test_int"
- android:value="2147483647" />
- <meta-data
- android:name="test_string"
- android:value="abcdefg" />
- <meta-data
- android:name="test_boolean"
- android:value="true" />
- </application>
java中解析:
- private void getMeta() {
- try {
- ApplicationInfo appInfo = context.getPackageManager()
- .getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
- int testInt = appInfo.metaData.getInt("test_int");
- String testString = appInfo.metaData.getString("test_string", "");
- boolean testBoolean = appInfo.metaData.getBoolean("test_boolean", false);
- Log.d(TAG, "getMeta testInt=" + testInt + ",testString=" + testString + ",testBoolean=" + testBoolean);
- } catch (Exception x) {
- Log.e(TAG, "getMeta error=" + x);
- }
- }
注:
1.meta-data数据是有数据类型的,如果没有按照正确的数据类型来取数据,则得不到预期的数据。
2.某些数据类型在定义数据时,需要特别注意数据的取值范围。比如int类型,其最大值是2^31-1,亦即:2147483647。如果定义的数据大于这个值,也将得不到预期的数据。那如何得到超出取值范围的数据呢?有一个方法是添加前缀字符串使其转换为字符串类型,在解析时按照字符串类型来读取,然后去掉前缀,从而得到预期的数据。
3.在定义boolean类型数据时,可以在忽略大小写的情况下定义value数据,比如:true、True、TRUE、false、False、FALSE都可以正确解析。
4.meta-data数据在AndroidManifest.xml中可以定义在<application>、<activity>、<activity-alias>、<service>、<receiver>、<provider>标签中,本文举例处于最常用的<application>标签中。当然每种情况的解析方法是不同的,本文暂不做详细介绍。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。