众所周知, 每个组件都有<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输出信息

11:11:46.733: V/MainActivity(571): application meta data value:application_meta_data_value
11:11:46.733: V/MainActivity(571): activity meta data value:activity_meta_data_value
11:11:46.763: V/MainActivity(571): service meta data value:service_meta_data_value
11:11:46.783: V/MainActivity(571): receiver meta data value:receiver_meta_data_value
官方介绍

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


更多相关文章

  1. Android(安卓)读取元素中的数据
  2. View类的XML属性、相关方法及说明
  3. Android的xml文件中引用类型
  4. Android(安卓)布局
  5. Android(安卓)- 组件工具箱(widget tool box)
  6. Google Android(安卓)应用程序结构
  7. Android全屏设置的两种方式
  8. android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android
  9. Android官方架构组件:Lifecycle

随机推荐

  1. MySQL审计特性调研
  2. Filebeat 收集日志的那些事儿
  3. Go泛型草案设计简明指南
  4. 云平台队列服务-Qbus实践
  5. 统住UOS系统更新后软件运行异常,回退系统
  6. Octavia API接口慢问题排查引发的思考
  7. 统信UOS系统登录界面反复弹出
  8. 链接选项 rpath 的原理和应用
  9. 8.3定义方法的注意事项
  10. insert带来的TiDB集群性能瓶颈排障