android <meta-data>元素 的用法

<meta-data>

SYNTAX:
<meta-data android:name="string"
           android:resource="resource specification"
           android:value="string" />
CONTAINED IN:
<activity> 
<activity-alias> 
<application> 
<provider> 
<receiver>
<service>
DESCRIPTION:
A name-value pair for an item of additional, arbitrary data that can be supplied to the parent component. A component element can contain any number of  <meta-data> subelements. The values from all of them are collected in a single  Bundle object and made available to the component as the  PackageItemInfo.metaDatafield.

Ordinary values are specified through the value attribute. However, to assign a resource ID as the value, use the resource attribute instead. For example, the following code assigns whatever value is stored in the@string/kangaroo resource to the "zoo" name:

<meta-data android:name="zoo" android:value="@string/kangaroo" />

On the other hand, using the resource attribute would assign "zoo" the numeric ID of the resource, not the value stored in the resource:

<meta-data android:name="zoo" android:resource="@string/kangaroo" />

It is highly recommended that you avoid supplying related data as multiple separate <meta-data> entries. Instead, if you have complex data to associate with a component, store it as a resource and use theresource attribute to inform the component of its ID.

ATTRIBUTES:
android:name
A unique name for the item. To ensure that the name is unique, use a Java-style naming convention — for example, " com.example.project.activity.fred".
android:resource
A reference to a resource. The ID of the resource is the value assigned to the item. The ID can be retrieved from the meta-data Bundle by the  Bundle.getInt() method.
android:value
The value assigned to the item. The data types that can be assigned as values and the Bundle methods that components use to retrieve those values are listed in the following table:
Type Bundle method
String value, using double backslashes (\\) to escape characters — such as "\\n" and "\\uxxxxx" for a Unicode character. getString()
Integer value, such as "100" getInt()
Boolean value, either "true" or "false" getBoolean()
Color value, in the form "#rgb", "#argb", "#rrggbb", or "#aarrggbb" getInt()
Float value, such as "1.23" getFloat()
INTRODUCED IN:
API Level 1


AndroidManifest.xml中,<meta-data>元素可以作为子元素, 被包含在<activity>、<application> 、<service>和<receiver>元素中,
 
不同的父元素,在应用时读取的方法也不同。

1 :在Activity应用<meta-data>元素。
    xml代码段:
   <activity...>
       <meta-data android:name="data_Name" android:value="hello my activity"></meta-data>
    </activity>
   
    java代码段:
   ActivityInfo info=this.getPackageManager()
                          .getActivityInfo(getComponentName(),
                          PackageManager.GET_META_DATA);
    String msg =info.metaData.getString("data_Name");
    Log.d(TAG, " msg == " + msg );
 
2:在application应用<meta-data>元素。
   xml代码段:
  <application...>
       <meta-data android:value="hello my application" android:name="data_Name"></meta-data>
   </application>
  
   java代码段:
    ApplicationInfo appInfo = this.getPackageManager()
                                  .getApplicationInfo(getPackageName(),
                          PackageManager.GET_META_DATA);
    String msg=appInfo.metaData.getString("data_Name");
    Log.d(TAG, " msg == " + msg );
 
3:在service应用<meta-data>元素。
   xml代码段:
   <service android:name="MetaDataService">
      <meta-data android:value="hello my service" android:name="data_Name"></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("data_Name");
    Log.d(TAG, " msg == " + msg );
 
4: 在receiver应用<meta-data>元素。
   xml代码段:
    <receiver android:name="MetaDataReceiver">
            <meta-data android:value="hello my receiver" android:name="data_Name"></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("data_Name");
    Log.d(TAG, " msg == " + msg );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值