Meta-data的作用和自定义

经常用第三方库的同学们应该经常会用到mata-data这个标签,, 比如:

<meta-data android:name="com.baidu.lbsapi.API_KEY" 

android:value="***************************USER-KEY****************" />

这一段就是百度地图的用户信息配置


那么他的作用很明显就是用来配置用户信息的, 但是百度地图是怎么获取到我们在manifest中定义的信息的呢?

答案是: 我们在配置百度地图的时候不仅在menifest中配置了信息, 还在Application中信息

SDKInitializer.initialize(getApplicationContext());

而这句话里面就包括了百度地图对已meta-data的数据的获取;


现在我们自己来尝试进行mata-data数据的获取:

首先我们在menifest中定义meta-data, 可以定义在Activity标签下, 也可以定义在application标签下;

我们用activity下的进行尝试:

        <activity android:name=".activity.PrjSelectActivity">
            <meta-data
                android:name="META-DATA-TEST"
                android:value="i am meta-data" />
        </activity>

然后再activity中进行如下操作:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //1.这里获取meta-data对应的参数的值. 
        try {
        //2.首先获取包管理器,通过包管理器,取得组件信息.
            //3..getActivityInfo(第一个参数,取得组件的名称.
            //new ComponentName(this, MetadataActivity.class)用来获取这个组件的信息.
            //PackageManager.GET_META_DATA指定取得信息的类型.
            ActivityInfo activityInfo = this.getPackageManager().getActivityInfo(
                    new ComponentName(this, MetadataActivity.class), PackageManager.GET_META_DATA);
            Bundle bundle = activityInfo.metaData;//返回一个Bundle对象.
            //从bundle获取,<meta-data>设定的值.
            String name = bundle.getString("META-DATA-TEST");
            String app = bundle.getString("password");
        //通过吐司打印出来<meta-data>设定的值.
            Log.e(TAG, name + app);
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

当然我们也可以用获取到的meta-data进行更加详细的操作, 比如百度地图, 当然就是将这个meta-data的信息进行验证了.
上一篇:前端杂谈: Attribute VS Property


下一篇:Github Repository 可视化 (D3.js & Three.js)