在AndroidManifest.xml中,<meta-data>元素可以作為子項目,被包含在<activity>、<application> 、<service>和<receiver>元素中,但
不同的父元素,在應用時讀取的方法也不同。
1 :在Activity的應用。
xml程式碼片段:
<activity...>
<meta-data android:name="myMsg" android:value="hello my activity"></meta-data>
</activity>
java程式碼片段:
ActivityInfo info=this.getPackageManager()
.getActivityInfo(getComponentName(),
PackageManager.GET_META_DATA);
String msg=info.metaData.getString("myMsg");
System.out.println("myMsg:"+msg);
一個組件元素能夠包含任意數量的meta-data子項目。它們所有的值都會被收集在Bundle對象中並且使其可以作為組件的 PackageItemInfo.metaData 欄位。一般的值可以通過value屬性來指定,但是如果要指定一個資源id作為一個值,那麼就要用resource屬性來代替。例如:下面的代碼就是指定儲存在@string/kangaroo 資源中的zoo名字。<meta-data android:name="zoo"
android:value="@string/kangaroo" />另一方面,利用resource屬性將指定zoo的資源id號,並不是儲存在資源中的資源值。<meta-data android:name="zoo" android:resource="@string/kangaroo" />當要給組件提供多個複雜的資料時,在這裡並不推薦使用多重meta-data元素,推薦你儲存這些資料在一個資源檔中並且利用resource屬性來通知它的id給組件。
2:在application的應用。
xml程式碼片段:
<application...>
<meta-data android:value="hello my application" android:name="myMsg"></meta-data>
</application>
java程式碼片段:
ApplicationInfo appInfo = this.getPackageManager()
.getApplicationInfo(getPackageName(),
PackageManager.GET_META_DATA);
String msg=appInfo.metaData.getString("myMsg");
System.out.println("myMsg:"+msg);
3:在service的應用。
xml程式碼片段:
<service android:name="MetaDataService">
<meta-data android:value="hello my service" 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");
System.out.println("myMsg:"+msg);
4: 在receiver的應用。
xml程式碼片段:
<receiver android:name="MetaDataReceiver">
<meta-data android:value="hello my receiver" 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");
System.out.println("myMsg:"+msg);
轉自:http://blog.sina.com.cn/s/blog_74b91ee00100yu0h.html