项目中有一个社区ID
的值,是定死的,但是测试环境和正式环境的不一样。很自然,要配置在gradle中:
buildTypes {
debug {
manifestPlaceholders = [HOME_FORUM_VALUE :"50000000010191"]
}
release {
manifestPlaceholders = [ HOME_FORUM_VALUE :"50000000059260"]
}
然后在Androidmanifest.xml中定义:
<!--首页社区-->
<meta-data
android:name="HOME_FORUM"
android:value="${HOME_FORUM_VALUE}" />
使用时可以这样取出:
ApplicationInfo appInfo = null;
try {
appInfo = this.getPackageManager().getApplicationInfo(
getPackageName(), PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
String sForumId = String.valueOf(appInfo.metaData.get("HOME_FORUM"));
long forumId = Long.parseLong(sForumId, 10);
但是问题来了,这个地方取出的竟然是一个浮点数5.0E13
.
我的解决方法是稍微做个变通,设置long值的时候在数字前面加个字符,取值时再去掉
buildTypes {
debug {
manifestPlaceholders = [HOME_FORUM_VALUE :"L50000000010191"]
}
release {
manifestPlaceholders = [ HOME_FORUM_VALUE :"L50000000059260"]
}
String sForumId = appInfo.metaData.getString("HOME_FORUM");
long forumId = Long.parseLong(sForumId.substring(1), 10);
支持的数据类型
类型 | 获取方法 |
---|---|
string | getString() |
int | getInt() |
bool | getBoolean() |
float | getFloat() |
网友评论