zoukankan      html  css  js  c++  java
  • Android 读取<meta-data>元素中的数据

    众所周知, 每个组件都有<meta-data>元素, 用于接收一些外部数据(eg: appKey), 那其中的值应该怎么读取呢. 

    1> Application

    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <meta-data
                android:name="application_meta_data"
                android:value="application_meta_data_value" />  <!--可以关联资源ID, 支持多种数据类型 -->
    ApplicationInfo info = null;
            
         try {
             info = getPackageManager()
                       .getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
         } catch (NameNotFoundException e) {
             e.printStackTrace();
         }
    Log.v(TAG, "application meta data value:" + info.metaData.getString("application_meta_data"));

    2> Activity 

    <activity
            android:name="fyc.app.testandroid.MainActivity" >
            <meta-data
                android:name="activity_meta_data"
                android:value="activity_meta_data_value" />
    </activity>
    ActivityInfo info = null;
            
        try {
            info = getPackageManager()
                     .getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
    Log.v(TAG, "activity meta data value:" + info.metaData.getString("activity_meta_data"));

     3> Service

    <service android:name="fyc.app.testandroid.MyService" >
                <meta-data
                    android:name="service_meta_data"
                    android:value="service_meta_data_value" />
    </service>
    ServiceInfo info = null;
            
        try {
            info = getPackageManager()
                    .getServiceInfo(new ComponentName(this, MyService.class), PackageManager.GET_META_DATA);  //如果在当前组件获取直接使用getcomponentName()
        } catch (NameNotFoundException e) {
                e.printStackTrace();
        }
    Log.v(TAG, "service meta data value:" + info.metaData.getString("service_meta_data"));

     4> BroadcastReceiver

    <receiver android:name="fyc.app.testandroid.MyReceiver" >
            <meta-data
                    android:name="receiver_meta_data"
                    android:value="receiver_meta_data_value" />
    </receiver>
    ActivityInfo info = null;
            
        try {
            info = getPackageManager()
                    .getReceiverInfo(new ComponentName(this, MyReceiver.class), PackageManager.GET_META_DATA);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
    Log.v(TAG, "receiver meta data value:" + info.metaData.getString("receiver_meta_data"));

     Logcat输出信息 

    11:11:46.733: V/MainActivity(571): application meta data value:application_meta_data_value
    11:11:46.733: V/MainActivity(571): activity meta data value:activity_meta_data_value
    11:11:46.763: V/MainActivity(571): service meta data value:service_meta_data_value
    11:11:46.783: V/MainActivity(571): receiver meta data value:receiver_meta_data_value

     官方介绍

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

    欢迎分享转载,转载请注明出处 http://www.cnblogs.com/fangyucun
  • 相关阅读:
    原生CSS、HTML 和 JavaScript 实现酷炫表单
    Vite2 如何设置打包后文件名
    读罢effective java,并不感觉特别好
    第六章部分习题答案
    第七章部分习题答案
    第八章部分习题答案
    mybatis 3.3.0之前版本的一个空指针BUG
    避免使用finalize方法
    mlp房价预测
    逻辑回归
  • 原文地址:https://www.cnblogs.com/fangyucun/p/3309587.html
Copyright © 2011-2022 走看看