众所周知, 每个组件都有<meta-data>元素, 用于接收一些外部数据(eg: appKey), 那其中的值应该怎么读取呢.

1> Application

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="application_meta_data"
android:value="application_meta_data_value" /> <!--可以关联资源ID, 支持多种数据类型 -->
ApplicationInfo info = null;

     try {
info = getPackageManager()
.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Log.v(TAG, "application meta data value:" + info.metaData.getString("application_meta_data"));

2> Activity

<activity
android:name="fyc.app.testandroid.MainActivity" >
<meta-data
android:name="activity_meta_data"
android:value="activity_meta_data_value" />
</activity>
ActivityInfo info = null;

    try {
info = getPackageManager()
.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Log.v(TAG, "activity meta data value:" + info.metaData.getString("activity_meta_data"));

 3> Service

<service android:name="fyc.app.testandroid.MyService" >
<meta-data
android:name="service_meta_data"
android:value="service_meta_data_value" />
</service>
ServiceInfo info = null;

    try {
info = getPackageManager()
.getServiceInfo(new ComponentName(this, MyService.class), PackageManager.GET_META_DATA); //如果在当前组件获取直接使用getcomponentName()
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Log.v(TAG, "service meta data value:" + info.metaData.getString("service_meta_data"));

4> BroadcastReceiver

<receiver android:name="fyc.app.testandroid.MyReceiver" >
<meta-data
android:name="receiver_meta_data"
android:value="receiver_meta_data_value" />
</receiver>
ActivityInfo info = null;

    try {
info = getPackageManager()
.getReceiverInfo(new ComponentName(this, MyReceiver.class), PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Log.v(TAG, "receiver meta data value:" + info.metaData.getString("receiver_meta_data"));

Logcat输出信息

::46.733: V/MainActivity(): application meta data value:application_meta_data_value
::46.733: V/MainActivity(): activity meta data value:activity_meta_data_value
::46.763: V/MainActivity(): service meta data value:service_meta_data_value
::46.783: V/MainActivity(): receiver meta data value:receiver_meta_data_value

官方介绍

http://developer.android.com/guide/topics/manifest/meta-data-element.html

Android 读取<meta-data>元素中的数据的更多相关文章

  1. jquery在元素中存储数据:data()

    转自:http://www.php.cn/js-tutorial-405445.html 在元素中存储数据:data() 1 2 3 4 5 6 7 8 9 10 <!DOCTYPE html& ...

  2. 聚集表(clustered table)data page中的数据行可以无序

    误区 一直以为只要一个表含有聚集索引,那么在data page中的数据行是排序的.比如原来data page中有1.2.4.5.6这样四条记录,那么我要插入3这条记录,应该是先将456三条记录往后移, ...

  3. POI 读取Excel文档中的数据——兼容Excel2003和Excel2007

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF - 提供读写Microsoft Exce ...

  4. C#跨进程读取listview控件中的数据

    http://www.cnblogs.com/Charltsing/p/slv32.html 欢迎交流:QQ564955427 读取标准的32位listview控件中的数据,网上已经有很多代码了.今天 ...

  5. Android 用SQLite 使用 CursorLoader 中的数据填充列表视图

    我做了简单的测试应用程序基于此示例.有一个按钮,插入到数据库和列表视图的数据.都是在 MainActivity 中.在原来的代码是restartLoader() 仅从调用 onResume() ,但它 ...

  6. python 读取文本文档中的数据

    import os dir = input('Please input the file dir:')#提示输入文件路径 while not os.path.exists(dir):#判断文件是否存在 ...

  7. 在服务端中,读取properties资源文件中的数据

    1.获取到资源的路径 2.读取数据 //properties文件对象 Properties properties = new Properties(); //通过HttpServletRequest ...

  8. C++读取excel特定行列中的数据

    可以通过COM API调用才是正解,不过需要编写COM接口类,Excel对象库的接口太多了……不过可以用工具自动生成. 我最近也在用VC操作Excel,在VC中可以这样做,在任何一个cpp文件中加入下 ...

  9. matlab读取txt文档中的数据

    ps:文件中只有数字! format long fp=fopen('文件路径','打开方式(r)') [num,count]=fscnaf(fp,'%f')

随机推荐

  1. Git与SVN

    http://www.nowamagic.net/academy/detail/48160207 前面提到,Linus一直痛恨CVS及SVN这些集中式的版本控制系统,为什么呢?Git是分布式版本控制系 ...

  2. 让ios项目同时支持ARC和非ARC

    ttp://code4app.com/snippets/one/禁止某几个文件用ARC模式编译/502344256803fa246d000000#s0 如果你的绝大部分代码需要ARC,那么就设置项目支 ...

  3. struts2自动接收表单数据

    提交页面主要代码: <form method="post" action="messageAction">   <input type=&qu ...

  4. java多线程知识点汇总(四)多线程知识点脉络图

    1.多线程安全问题 1)synchronized关键字:如何加锁的问题,选择synchronized方法还是synchnized代码块. 选择哪个锁问题,this对象,还是class对象(针对stat ...

  5. js复制兼容:ZeroClipboard复制到剪切板(支持IE、FF、Chrome)

    注意:ZeroClipboard在本地测试无法直接使用,必须在服务器上测试,如http://localhost... 准备:ZeroClipboard.swf 和 ZeroClipboard.js 小 ...

  6. SharePoint 2013 本地创建解决方案

    在之前的博客<SharePoint 2013本地开发解决方案以及远程调试>中,我们介绍了如何通过修改注册表,使SharePoint 2013 解决方案可以本地编辑,也提及了即使修改注册表, ...

  7. comgrid获取多选值

    var val = $('#cc').combobox('getValues');

  8. 返回content-length=0问题解决

    遇到一个奇怪问题,有时候会不显示css或图片文件,通过调试工具发现请求返回长度都是0.研究半天未果,初步猜测可能是过滤器给拦截了. 果然在一个过滤器中发现相关代码: HttpRequestWrappe ...

  9. Linux命令大全----系统管理相关命令

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka       摘要:本文主要讲了Linux命令大全----系统管理相关命令,并附有实例 一.安装 ...

  10. COGS 08-备用交换机 题解——S.B.S.

    8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直 ...