Android开发中如何读取meta-data里内容?
这个知识点不长用,但是也有见到的地方,什么地方常用呢?一般是用于配置秘钥之类的,比如说,你要集成一个SDK,要么用静态init的形式,要么就用这个配置的形式啦。
一般来说,当你申请到了sd以后,服务商的后台会提供一个秘钥给你,在配置说明里会要你配置一下。 比如说:
<meta-data
android:name="app_key"
android:value="Pbaeasfasd239asdfa94aladfasBrqc9F02c"/>
那么SDK是怎么获取到这些值的呢?我们一步一步来了解!
Meta-data标签可以放在那里呢?
在开始获取内容之前,我们先看看这个meta-data可以放在那里呢?
其实,可以放在两个地方,一个是application标签下在,一个是可以放在activity的标签下面
![20180201_141541.png](https://imgs.sunofbeaches.com/group1/M00/00/06/rBsADV2uoeyAL9mOAABZJf9zHtA509.png)
这里有什么区别呢?放在不同的地方,获取的方式就不一样了。所以我们为什么先讲这个,再讲获取方式
怎么获取meta-data里的数据呢?
前面说了,放在不同的标签里获取的方式是不一样的。首先,我们是获取application里的:
ApplicationInfo applicationInfo = this.getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA);
Bundle applicationMetaData = applicationInfo.metaData;
String appKey = applicationMetaData.getString("app_key");
Log.d(TAG, "appKey == " + appKey);
activity标签里的meta-data获取方式:
ActivityInfo activityInfo = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
Bundle activityMetaData = activityInfo.metaData;
String testData = activityMetaData.getString("mate_data_test");
Log.d(TAG, "testData == " + testData);
就是这么简单,下面是全部代码的截图和运行的结果:
![20180201_142135.png](https://imgs.sunofbeaches.com/group1/M00/00/06/rBsADV2uoiuAT-Y-AABx1ywUsUY370.png)
运行结果:
![20180201_144642.png](https://imgs.sunofbeaches.com/group1/M00/00/06/rBsADV2uokiAa5SDAAET9fsN7_w828.png)
meta-data的value里可以放什么内容呢?
我们知道放在那里了,也 知道怎么获取对应的内容了,下面我们看看value里可以放什么内容
![20180201_145242.png](https://imgs.sunofbeaches.com/group1/M00/00/06/rBsADV2uomKAA-7sAAAe0vV2rwk302.png)
我们可以发现,它可以填写好多东西呢!
但是:假设我们填写的是@drawable/XXX,获取到的值是什么呢? 是int,也就是该资源的id。
所以,主要还是我们的get方法: 可以getBoolean可以getString,可以getInt…其实是支持基本数据类型。
![20180201_145557.png](https://imgs.sunofbeaches.com/group1/M00/00/06/rBsADV2uonCAUrgjAAEXt_cJJsA225.png)
所以说,我们可以放这些内容。
好啦,关于meta-data的获取就说到这里吧,欢迎转载并注明出处!