一篇關于meta-data的轉載記錄
-
application下
<application ... >
<meta-data android:name="TEST_KEY" android:value="${test_key}"/>
</application>
try {
ApplicationInfo info = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Log.e("info", info.metaData.getString("TEST_KEY"));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
-
activity下
<activity ... >
<meta-data android:name="TEST_KEY" android:value="${test_key}"/>
</activity>
try {
ActivityInfo info = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
Log.e("info", info.metaData.getString("TEST_KEY"));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
-
service下
<service ... >
<meta-data android:name="TEST_KEY" android:value="${test_key}"/>
</service>
try {
ServiceInfo info = getPackageManager().getServiceInfo(getComponentName(), PackageManager.GET_META_DATA);
Log.e("info", info.metaData.getString("TEST_KEY"));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
-
receiver下
<receiver ... >
<meta-data android:name="TEST_KEY" android:value="${test_key}"/>
</receiver>
try {
ActivityInfo info = getPackageManager().getReceiverInfo(getComponentName(), PackageManager.GET_META_DATA);
Log.e("info", info.metaData.getString("TEST_KEY"));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
manifestPlaceholders使用
在build.gradle的多版本中設置
manifestPlaceholders = ["test_key": "修改的內容"]
好比如下
productFlavors{
dev{
manifestPlaceholders = ["test_key": "測試版key"]
}
free{
applicationIdSuffix ".free"
manifestPlaceholders = ["test_key": "Free版key"]
}
}
效果如下

測試

Free
資料
Android獲取Manifest中<meta-data>元素的值
使用 gradle 在編譯時動態(tài)設置 Android resValue / BuildConfig / Manifes中<meta-data>變量的值