Android中<meta-data>的使用

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

1.在application中应用

  • xml代码
<application>  
    <meta-data
            android:name="UMENG_CHANNEL"
            android:value="AA503"/> 
</application> 
  • Java代码获取值
ApplicationInfo appInfo = this.getPackageManager()  
                                  .getApplicationInfo(getPackageName(),  
                          PackageManager.GET_META_DATA);  
String msg=appInfo.metaData.getString("UMENG_CHANNEL");  

2.在activity中应用

  • xml代码
<activity>  
    <meta-data
            android:name="UMENG_CHANNEL"
            android:value="AA503"/> 
</activity> 
  • Java代码获取值
ActivityInfo info=this.getPackageManager()  
                          .getActivityInfo(getComponentName(),  
                          PackageManager.GET_META_DATA);  
String msg=info.metaData.getString("UMENG_CHANNEL");  

3.在service中应用

  • xml代码
<service android:name="MetaDataService">  
    <meta-data
            android:name="UMENG_CHANNEL"
            android:value="AA503"/> 
</service> 
  • Java代码获取值
ComponentName cn=new ComponentName(this, MetaDataService.class);  
ServiceInfo info=this.getPackageManager()  
                        .getServiceInfo(cn, PackageManager.GET_META_DATA);  
String msg=info.metaData.getString("UMENG_CHANNEL");  

4.在receiver使用

  • xml代码
<receiver android:name="MetaDataReceiver">  
     <meta-data
            android:name="UMENG_CHANNEL"
            android:value="AA503"/> 
      <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");  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容