当前位置:   article > 正文

读取AndroidManifest文件的meta-data数据_androidmanifest 读取 配置

androidmanifest 读取 配置

AndroidManifest.xml中可以添加meta-data标签来定义一些配置数据,app中可以读取这些数据。
meta-data标签定义了一组键值对,分别为name和value。虽然meta-data没有定义数据类型的属性,但实际上meta-data数据是有数据类型的,而这个类型是由value的数据自动推导出来的。常用的类型如下:纯数字就属于int类型,带有非数字的字符就属于String类型,如果字符串是true或false就属于boolean类型。

举例如下:
AndroidManifest.xml中定义:

  1. <application>
  2. <meta-data
  3. android:name="test_int"
  4. android:value="2147483647" />
  5. <meta-data
  6. android:name="test_string"
  7. android:value="abcdefg" />
  8. <meta-data
  9. android:name="test_boolean"
  10. android:value="true" />
  11. </application>

java中解析:

  1. private void getMeta() {
  2. try {
  3. ApplicationInfo appInfo = context.getPackageManager()
  4. .getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
  5. int testInt = appInfo.metaData.getInt("test_int");
  6. String testString = appInfo.metaData.getString("test_string", "");
  7. boolean testBoolean = appInfo.metaData.getBoolean("test_boolean", false);
  8. Log.d(TAG, "getMeta testInt=" + testInt + ",testString=" + testString + ",testBoolean=" + testBoolean);
  9. } catch (Exception x) {
  10. Log.e(TAG, "getMeta error=" + x);
  11. }
  12. }

注:
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>标签中。当然每种情况的解析方法是不同的,本文暂不做详细介绍。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/652650
推荐阅读
相关标签
  

闽ICP备14008679号