Android获取.Gradle文件中的值和Manifests文件中的值

项目中有登录页面,但平时调试的时候每次都输入用户名密码来登录太麻烦,写成固定值发布的时候又要重新替换和注释。所以就想从不同版本获得信息然后代码中控制。

在Android项目文件中的build.gradle中,在android标签下的defaultConfig标签下,可以添加manifestPlaceholders,里面可以存一些app的配置信息值,比如是否是发布版本。如下图:

Android获取.Gradle文件中的值和Manifests文件中的值_第1张图片

这样平时编译调试的时候使用的是debug版本默认的false,发布的时候使用的是release版本为true,即只需要在代码中获取这个isRelease值就可控制登录时候是否填写用户名密码或者直接赋值固定值。

那怎么获取build.gradle文件中的值呢,整个app项目中有个配置文件AndroidManifest.xml,在application标签下,可新写meta-data标签,其中的value值用${value}来表示,花括号中的value为gradle文件中的变量名。如下图:

Android获取.Gradle文件中的值和Manifests文件中的值_第2张图片

然后代码中就可以写个工具类来获取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;
    }
}

代码中再根据返回的值进行判断和控制即可。

你可能感兴趣的:(Android)