在
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");