您的位置:首页 > 其它

meta-data的使用

2016-01-05 11:02 441 查看
参考:http://developer.android.com/guide/topics/manifest/meta-data-element.html

/article/2180602.html

/article/1609837.html

meta-data键值对,所有的名值对被包装成Bundle供组件使用,因此使用方式同Bundle。metadata普通值由value属性给出,资源ID由resource属性给出。

定义meta-data:

       <meta-data
android:name="pepelu_string_1"
android:value="pepelu_value" />
<meta-data
android:name="pepelu_string_2"
android:value="@string/meta_pepelu" />
<meta-data
android:name="pepelu_int_1"
android:resource="@drawable/ic_launcher" />


相关资源文件:

<string name="meta_pepelu">activity meta data pepeplu</string>
//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();
}


再其他组件中使用meta-data:

//在Activity应用<meta-data>元素。
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");


修改meta-data的值,实现在application中的数据传递,不能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: