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