文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android Manifest中meta-data扩展元素数据的配置与获取方式

2022-06-06 17:32

关注

在AndroidManifest.xml清单文件中 我们有时会看到如下类似的<meta-data ... >元素开始的配置内容:


<meta-data
  android:name="com.google.android.maps.v2.API_KEY"
  android:value="AIzaSyBhBFOgVQclaa8p1JJeqaZHiCo2nfiyBBo" />
<meta-data
  android:name="com.google.android.gms.version"
  android:value="@integer/google_play_services_version" />

标签<meta-data>是提供组件额外的数据用的,它本身就是一个键值对,可以自定义名称和值。它可以包含在以下组件当中:

<activity>、<application> 、<service> 和 <receiver>

一、如何配置<mate-data...>元素:

标签<meta-data>元素的配置语法如下:


<meta-data android:name="string"
   android:resource="resource specification"
   android:value="string" />

说明:一般的值可以通过value属性来指定,但是如果要指定一个资源的id,则需要使用resource属性来配置。

如以下配置内容:

<meta-data android:name="api_key" android:value="@string/api_key" />

指定的api_key值为存储在资源文件string中的api_key值 如:

AIzaSyBhBFOgVQclaa8p1JJeqaZHiCo2nfiyBBo

如以下配置内容:

<meta-data android:name="resId" android:resource="@string/res_id" />

指定的resId值则是为res_id的资源id号 而不是string中的res_id值

二、如何获取<mate-data...>元素配置的值:

1、在<application...>元素下配置<mate-data...>元素

xml代码段:


<application...>
  .....
  <meta-data
     android:name="api_key"
     android:value="AIzaSyBhBFOgVQclaa8p1JJeqaZHiCo2nfiyBBo" />
</application>

Java代码段:


    try {
      ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(),
          PackageManager.GET_META_DATA);
      String value = appInfo.metaData.getString("api_key");
      Log.d("Tag", " app key : " + value); // Tag﹕ app key : AIzaSyBhBFOgVQclaa8p1JJeqaZHiCo2nfiyBBo
    } catch (PackageManager.NameNotFoundException e) {
      e.printStackTrace();
    }

2、在<activity...>元素下配置<mate-data...>元素

xml代码段:


<activity ...>
  .....
  <meta-data android:name="resource_id"
     android:resource="@string/ice" />
</activity>

Java代码段:


    try {
      ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(),
          PackageManager.GET_META_DATA);
      // 获取到的是 @string/ice 对应的资源id值
      int value = activityInfo.metaData.getInt("resource_id");
      Log.d("Activity Tag", "resource_id : " + value); // Activity Tag﹕ resource_id : 2131361808
    } catch (PackageManager.NameNotFoundException e) {
      e.printStackTrace();
    }

3、在<service...>元素下配置<mate-data...>元素

xml代码段:


<service android:name="MetaDataService">
   .....
   <meta-data android:name="service_meta_data" android:value="xxxxxxx" />
</service>

Java代码段:


try {
   ComponentName cn=new ComponentName(this, MetaDataService.class);
   ServiceInfo info=this.getPackageManager()
        .getServiceInfo(cn, PackageManager.GET_META_DATA);
   String value = info.metaData.getString("service_meta_data");
   Log.d("Service TAG", " value == " + value);
} catch (PackageManager.NameNotFoundException e) {
   e.printStackTrace();
}

4、在<receiver...>元素下配置<mate-data...>元素

xml代码段:


<receiver android:name="MetaDataReceiver">
   .....
   <meta-data android:name="receiver_meta_data" android:value="xxxxxxx" />
</receiver>

Java代码段:


try {
   ComponentName cn=new ComponentName(this, MetaDataReceiver.class);
   ActivityInfo info=context.getPackageManager()
               .getReceiverInfo(cn, PackageManager.GET_META_DATA);
   String value = info.metaData.getString("receiver_meta_data");
   Log.d("Receiver TAG", " value == " + value);
} catch (PackageManager.NameNotFoundException e) {
   e.printStackTrace();
}

以上这篇Android Manifest中meta-data扩展元素数据的配置与获取方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文章:数据清洗--DataFrame中的空值处理方法Android获取清单文件中的meta-data,解决碰到数值为null的问题


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯