经常用第三方库的同学们应该经常会用到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的信息进行验证了.