zoukankan      html  css  js  c++  java
  • AndroidManifest.xml文件详解(meta-data)

    http://blog.csdn.net/think_soft/article/details/7567189

    语法(SYNTAX):

    <meta-dataandroid:name="string"
               android:resource="resource specification"
               android:value="string"/>

    被包含于(CONTAINED IN):

    <activity>

    <activity-alias>

    <service>

    <receiver>

    <application>

    <provider>

    说明(DESCRIPTION):

    这个元素用name- value对的格式给其父组件提供任意可选的数据。一个组件元素能够包含任意多个<meta-data>子元素,所有这些元素中定义的值会被 收集到一个Bundle对象中,并且提供给组件的PackageItemInfo.metaData属性字段。

    通常值是通过其value属性来指定的。但是,也可以使用resource属性来代替,把一个资源ID跟值进行关联。

    例如,下面的代码就是把存储在@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通知给组件。

    属性(ATTRIBUTES):

    android:name

    针对项目的一个唯一名称。使用Java样式的命名规则,可以确保名称的唯一性,例如:

    com.example.project.activity.fred。

    android:resource

    这个属性定义了一个要引用的资源。资源的ID会跟这个项目进行关联。通过Bundle.getInt()方法能够从meta-data的Bundle对象中获取这个ID。

    android:value

    这个属性会给这个项目分配一个值。下表列出了可能分配的数据的数据类型,以及获取这些数据的方法:

    类型

    Bundle对象方法

    字符串。对于一个Unicode字符,要使用双斜线(\)来进行转义,如\n和\uxxxx

    getString()

    整数值,如100

    getInt()

    布尔值,true或false

    getBoolean()

    颜色值,如#rgb、#argb、#rrggbb、#aarrggbb

    getString()

    浮点值,如1.23

    getFloat()

    被引入版本(INTRODUCED IN):

    API Level 1

    在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);

    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);

  • 相关阅读:
    HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者
    博弈论小结
    HDU 2149 Public Sale
    有上下界限制的网络流-总结
    loj #117. 有源汇有上下界最小流
    jquery中not的用法[.not(selector)]
    Assert随笔
    Maps.newHashMapWithExpectedSize(2)
    java1.8操作日期
    控制input只输入数字--- onkeyup="value=value.replace(/[^d]/g,'')"
  • 原文地址:https://www.cnblogs.com/zhangxia/p/4958276.html
Copyright © 2011-2022 走看看