众所周知, 每个组件都有<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_value11:11:46.733: V/MainActivity(571): activity meta data value:activity_meta_data_value11:11:46.763: V/MainActivity(571): service meta data value:service_meta_data_value11: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. View类的XML属性、相关方法及说明
  2. Android(安卓)布局
  3. Android(安卓)- 组件工具箱(widget tool box)
  4. Google Android(安卓)应用程序结构
  5. android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android
  6. Android官方架构组件:Lifecycle
  7. 【Android】图片切换组件ImageSwitcher的运用
  8. XamarinAndroid组件教程RecylerView动画组件使用动画(3)
  9. View有关基础

随机推荐

  1. Android View绘制及事件(一)屏幕的视图层级
  2. android sdk 中apidemo如何加载到eclipse
  3. Android(安卓)studio导入eclipse项目
  4. TextView属性大全!技术干货
  5. 关于移动端踩过的坑
  6. Android NDK 使用第一步,编译c文件,声明jni
  7. 谈谈Android的那些事
  8. 从Android界面开发谈起
  9. 如何在Android中利用AIDL添加service
  10. Android(安卓)Material Design