meta-data键值对,所有的名值对被包装成Bundle供组件使用,因此使用方式同Bundle。metadata普通值由value属性给出,资源ID由resource属性给出。
定义meta-data:
相关资源文件:
//R:
public static int ic_launcher=0x7f020017;
使用:
//获取activity 的meta-data字段:string
try {
ActivityInfo itemInfo = this.getPackageManager().getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
String tag = itemInfo.metaData.getString("pepelu_string_1");
Log.d("pepelu","activity meta-data=" + tag);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
//获取int字段
try {
ActivityInfo info2=getPackageManager().getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
int picId=info2.metaData.getInt("pepelu_int_1");
Log.d("pepelu","activity int ="+picId);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}</code></pre>
再其他组件中使用meta-data:
//在Activity应用元素。
ActivityInfo info = this.getPackageManager().getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
info.metaData.getString("meta_name");
//在application应用<meta-data>元素。
ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
appInfo.metaData.getString("meta_name");
//在service应用<meta-data>元素。
ComponentName cn = new ComponentName(context,MetaDataService.class);
ServiceInfo info = this.getPackageManager().getServiceInfo(cn,PackageManager.GET_META_DATA);
info.metaData.getString("meta_name");
//在receiver应用<meta-data>元素。
ComponentName cn = new ComponentName(context,MetaDataReceiver.class);
ActivityInfo info = context.getPackageManager().getReceiverInfo(cn,PackageManager.GET_META_DATA);
info.metaData.getString("meta_name");</code></pre>
不能修改meta-data属性值