Android中<meta-data>的使用

本文详细介绍了在Android应用的不同组件中如何使用<meta-data>元素来提供额外的数据,包括Activity、Application、Service和Receiver的应用场景及代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

1.在Activity的应用。

xml代码段:  

<activity>
       <meta-data android:name="myMsg" android:value="hello"></meta-data>
</activity>

java代码段:

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

2.在application的应用。

xml代码段:

<application>
     <meta-data android:value="hello" android:name="myMsg"></meta-data>
</application>

java代码段:

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

3.在service的应用。

xml代码段:

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

java代码段: 

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

4.在receiver的应用。

xml代码段:

<receiver android:name="MetaDataReceiver">
      <meta-data android:value="hello" android:name="myMsg"></meta-data>
      <intent-filter>
          <action android:name="android.intent.action.PHONE_STATE"></action>
      </intent-filter>
 </receiver>

java代码段:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值