赞
踩
下面介绍下manifestPlaceholders
占位符的使用,其实很好理解,你可以认为它可以在 build.gradle
文件中定义字符串并将值映射到 AndroidManifest
清单文件的指定位置.
下面说下使用方法:
部分代码如下:
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".MainActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
-
- // 这是在Activity 标签下
- <meta-data android:name="nameActivity" android:value="${test_value_activity}"/>
- </activity>
-
- // 这是在Activity 标签下
- <meta-data android:name="nameApplication" android:value="headword${test_value}append_word"/>
- </application>

总结如下:
${你定义名称}
当然${}
的前后面直接添加字符串.
例如:
- android:value="${test_value_activity}"
-
- android:value="headword${test_value}append_word"
部分代码如下:
- defaultConfig {
- applicationId "com.didikee.wififriend"
- minSdkVersion 15
- targetSdkVersion 24
- versionCode 1
- versionName "1.0"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
- manifestPlaceholders = [test_value: "这是测试值",test_value_activity:"Activity 中的测试值"]
- }
总结如下:
manifestPlaceholders = [symbol1: "value1", symbol2:"value2"]
多个值时用,
分隔开.
在获取值的时候是区分占位符在 Activity标签,Application标签,service标签,receiver标签
下,所以有两种获取方式:
在Activity标签下
:
- ActivityInfo activityInfo = null;
- try {
- activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- if (activityInfo == null)return;
- String value = activityInfo.metaData.getString("nameActivity");
在 Application标签下
:
- ApplicationInfo applicationInfo = null;
- try {
- applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- if (applicationInfo == null)return;
- String value = applicationInfo.metaData.getString("nameApplication");
同理,在service标签,receiver标签
下分别为:
- String value= MainActivity.this.getPackageManager().getServiceInfo(ComponentName,PackageManager.GET_META_DATA).metaData.getString("symbol");
-
- String value= MainActivity.this.getPackageManager().getReceiverInfo(ComponentName,PackageManager.GET_META_DATA).metaData.getString("symbol");
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。