AndroidManifest.xml里的meta-data

本文详细介绍了如何在AndroidManifest.xml文件中使用<meta-data>元素为Activity、Service、Application和Broadcast Receiver等组件添加元数据,并提供了如何通过Java代码获取这些元数据的具体示例。

<meta-data>是对外界开放的,是向系统注册的信息,系统及外界是可以通过PackageInfo相关API获取到meta-data的信息。

 在AndroidManifest.xml中,<meta-data>元素可以作为子元素,被包含在<activity>、<application> 、<service>和<receiver>元素中,但不同的父元素,在应用时读取的方法也不同。

  <meta-data>元素用name-value对的格式给其父组件提供任意可选的数据。一个组件元素能够包含任意多个<meta-data>子元素,所有这些元素中定义的值会被收集到一个Bundle对象中,并且提供给组件的PackageItemInfo.metaData属性字段。通常值是通过其value属性来指定的。但是,也可以使用resource属性来代替,把一个资源ID跟值进行关联

1.在Activity的应用。

xml代码段:  

  1. <activity>
  2. <meta-data android:name="myMsg" android:value="hello"></meta-data>
  3. </activity>

java代码段:

  1. ActivityInfo info=this.getPackageManager()
  2. .getActivityInfo(getComponentName(),
  3. PackageManager.GET_META_DATA);
  4. String msg=info.metaData.getString("myMsg");

2.在application的应用。

xml代码段:

  1. <application>
  2. <meta-data android:value="hello" android:name="myMsg"></meta-data>
  3. </application>

java代码段:

  1. ApplicationInfo appInfo = this.getPackageManager()
  2. .getApplicationInfo(getPackageName(),
  3. PackageManager.GET_META_DATA);
  4. String msg=appInfo.metaData.getString("myMsg");

3.在service的应用。

xml代码段:

  1. <service android:name="MetaDataService">
  2. <meta-data android:value="hello" android:name="myMsg"></meta-data>
  3. </service>

java代码段: 

  1. ComponentName cn=new ComponentName(this, MetaDataService.class);
  2. ServiceInfo info=this.getPackageManager()
  3. .getServiceInfo(cn, PackageManager.GET_META_DATA);
  4. String msg=info.metaData.getString("myMsg");

4.在receiver的应用。

xml代码段:

  1. <receiver android:name="MetaDataReceiver">
  2. <meta-data android:value="hello" android:name="myMsg"></meta-data>
  3. <intent-filter>
  4. <action android:name="android.intent.action.PHONE_STATE"></action>
  5. </intent-filter>
  6. </receiver>

java代码段:

  1. ComponentName cn=new ComponentName(context, MetaDataReceiver.class);
  2. ActivityInfo info=context.getPackageManager()
  3. .getReceiverInfo(cn, PackageManager.GET_META_DATA);
  4. String msg=info.metaData.getString("myMsg");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值