项目中有登录页面,但平时调试的时候每次都输入用户名密码来登录太麻烦,写成固定值发布的时候又要重新替换和注释。所以就想从不同版本获得信息然后代码中控制。
在Android项目文件中的build.gradle
中,在android
标签下的defaultConfig
标签下,可以添加manifestPlaceholders
,里面可以存一些app的配置信息值,比如是否是发布版本。如下图:
这样平时编译调试的时候使用的是debug版本默认的false,发布的时候使用的是release版本为true,即只需要在代码中获取这个isRelease
值就可控制登录时候是否填写用户名密码或者直接赋值固定值。
那怎么获取build.gradle
文件中的值呢,整个app项目中有个配置文件AndroidManifest.xml
,在application
标签下,可新写meta-data
标签,其中的value值用${value}
来表示,花括号中的value为gradle
文件中的变量名。如下图:
然后代码中就可以写个工具类来获取manifest
文件的meta-data
的值。
代码:
//不同的类型要区别获取,以下是布尔类型的
public static boolean getAppMetaDataBoolean(Context context, String metaName, boolean defaultValue) {
try {
//application标签下用getApplicationinfo,如果是activity下的用getActivityInfo
boolean value = context.getPackageManager()
.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA)
.metaData.getBoolean(metaName, defaultValue);
L.d("meta-data", metaName + " = " + value);
return value;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return defaultValue;
}
}
代码中再根据返回的值进行判断和控制即可。