在manifest里面我们经常会发现有几个meta-data标签,他们常被用来配置参数常量。
例如:<meta-data android:name="HIAPK_RECDID" android:value="2238872"/>
<meta-data android:name="UMENG_APPKEY" android:value="4dfb66ee431fe371d9000063" />
<meta-data android:name="appkey" android:value="110000" />
这三个标签是写在application下面的。
meta-data还可以出现在activity,receiver,service标签中。
一,在application中
- <meta-data android:name="application_name" android:value="application_value" />
<!-- app -->
<meta-data android:name="application_name" android:value="application_value" />
获取meta-data
- getPackageName(), PackageManager.GET_META_DATA);
- String msg = appInfo.metaData.getString("application_name");
ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(
getPackageName(), PackageManager.GET_META_DATA);
String msg = appInfo.metaData.getString("application_name");
二,在activity中
- <activity android:name=".MyActivity" android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <meta-data android:name="activity_name" android:value="activity_value" />
- </activity>
<!-- Activity -->
<activity android:name=".MyActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="activity_name" android:value="activity_value" />
</activity>
获取meta-data
ActivityInfo actInfo = mContext.getPackageManager().getActivityInfo(
- getComponentName(), PackageManager.GET_META_DATA);
- String msg = actInfo.metaData.getString("activity_name");
ActivityInfo actInfo = mContext.getPackageManager().getActivityInfo(
getComponentName(), PackageManager.GET_META_DATA);
String msg = actInfo.metaData.getString("activity_name");
三,在service中
- <service android:name=".MyService">
- <meta-data android:name="service_name" android:value="service_value" />
- </service>
<!-- 服务 -->
<service android:name=".MyService">
<meta-data android:name="service_name" android:value="service_value" />
</service>
获取meta-data
ComponentName cn = new ComponentName(this, MyService.class);
- try {
- ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,
- PackageManager.GET_META_DATA);
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- String msg = serInfo.metaData.getString("service_name");
ComponentName cn = new ComponentName(this, MyService.class);
try {
ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,
PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
String msg = serInfo.metaData.getString("service_name");
四,在receiver中,也就是广播接收者(拨打电话的时候会看到toast消息)
<receiver android:name=".MyReceiver">
- <meta-data android:name="receiver_name" android:value="receiver_value" />
- <intent-filter>
- <action android:name="android.intent.action.PHONE_STATE" />
- </intent-filter>
- </receiver>
<receiver android:name=".MyReceiver">
<meta-data android:name="receiver_name" android:value="receiver_value" />
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
获取meta-data
if (TextUtils.equals("android.intent.action.PHONE_STATE", intent
- .getAction())) {
- ComponentName cn = new ComponentName(context, MyReceiver.class);
- try {
- ActivityInfo info = context.getPackageManager().getReceiverInfo(cn,
- PackageManager.GET_META_DATA);
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- String msg = info.metaData.getString("receiver_name");
- // 打电话测试即可
- Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
- }