在开发中,有时需要对 app的新版本和旧版本,做不同的处理。可以根据版本号判断。
新版本app交互有变化时,同一个接口在 不同版本可能要返回不同的数据。
如果不区分新旧版本,有可能会导致旧版本app 不可用。
比如 1.2.1 的旧版本有一个功能是跳转 微信,到了 3.5.1 版本修改了 app的交互,变成跳转 微信小程序,如果不区分处理,旧版本就没法使用了。
示例:
public class VersionUtil {
private static final String SPLIT_CHAR = "\\.";
private static final String SPLIT = ".";
/**
* 检查版本
* @param version 要检查的版本号,格式类似:3.5.1
* @param oldVersion 旧版本号,格式类似:1.2.1,缺少的需补0.
* @return 返回对应的数字
*/
public static int checkVersion(String version, String oldVersion) {
if (StringUtils.isBlank(version) || !version.contains(SPLIT)) {
throw new IllegalArgumentException("请输入正确格式的版本号");
}
//点号做分隔符,需要做转义处理
return checkVersion( version, oldVersion, 0, 1, SPLIT_CHAR);
}
/**
* 检查版本
* @param version 要检查的版本号,格式类似:3.5.1
* @param oldVersion 旧版本号,格式类似:1.2.1,缺少的需补0.
* @param oldVersionNum 旧版本号对应的数字
* @param newVersionNum 新版本号对应的数字
* @param splitChar 类似 "\\."
* @return 返回对应的数字
*/
public static int checkVersion(String version, String oldVersion, Integer oldVersionNum, Integer newVersionNum, String splitChar) {
if (StringUtils.isBlank(version) ) {
throw new IllegalArgumentException("请输入正确格式的版本号");
}
if (StringUtils.isBlank(oldVersion) ) {
throw new IllegalArgumentException("请输入正确格式的旧版本号");
}
String[] versionArray = version.split(splitChar);
String[] oldVersionArray = oldVersion.split(splitChar);
if (versionArray.length >= 1 && Integer.parseInt(versionArray[0]) > Integer.parseInt(oldVersionArray[0])) {
return newVersionNum;
}
if (versionArray.length >= 2 && Integer.parseInt(versionArray[0]) == Integer.parseInt(oldVersionArray[0])
&& Integer.parseInt(versionArray[1]) > Integer.parseInt(oldVersionArray[1])) {
return newVersionNum;
}
if (versionArray.length >= 3 && Integer.parseInt(versionArray[0]) == Integer.parseInt(oldVersionArray[0])
&& Integer.parseInt(versionArray[1]) == Integer.parseInt(oldVersionArray[1])
&& Integer.parseInt(versionArray[2]) > Integer.parseInt(oldVersionArray[2])) {
return newVersionNum;
}
return oldVersionNum;
}
}
标签:String,版本号,app,兼容,version,新旧,versionArray,parseInt,Integer
From: https://www.cnblogs.com/expiator/p/18370531