<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代码段:
-
<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");