zoukankan      html  css  js  c++  java
  • meta-data的使用

    参考:http://developer.android.com/guide/topics/manifest/meta-data-element.html

    http://my.oschina.net/xesam/blog/135333

    http://blog.csdn.net/top_code/article/details/11952563

    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中的数据传递,不能。

  • 相关阅读:
    BZOJ2874 训练士兵 主席树
    单纯形 BZOJ3112: [Zjoi2013]防守战线
    珠宝 jewelry 省选模拟
    FWT [BZOJ 4589:Hard Nim]
    后缀自动机SAM BZOJ 2806
    就是要第一个出场的albus 【BZOJ】 线性基
    冲刺第十二十三天
    冲刺第十 十一天
    阅读8.9.10
    冲刺第八九天
  • 原文地址:https://www.cnblogs.com/mada0/p/5101644.html
Copyright © 2011-2022 走看看