给定两个版本号,比较哪一个版本号更新。
通过版本号的长度,分两种情况: 1 服务器版本号 长度 大于 当前版本号 ;2 小于或等于 。
通过“.”拆分字符串,比较相同位的版本值,若长度不够就补0。
/**
* 版本对比(是否需要更新版本)
*
* @param newVersion
* 服务器上获取的版本
* @param indexVersion
* 当前使用的版本
* @return true:服务器上是最新版本,需要更新; false:不需要更新
*/
public static boolean isUpdateForVersion(String newVersion, String indexVersion) {
// boolean resultFlag = false;
if ("".equals(newVersion) || null == newVersion
|| "null".equals(newVersion)) {
return false;
} else {
String[] newNums = newVersion.split("\\.");
String[] indexNums = indexVersion.split("\\.");
if (newNums.length > indexNums.length) {// 服务器版本长度 比当前版本要长
for (int i = 0; i < newNums.length; i++) {
//位数不够,给当前版本补零
int currentValue = 0;
if(i < indexNums.length){
currentValue = Integer.parseInt(indexNums[i]);
}
// 服务器上同位版本数如果有一个数大于 当前的,就是最新版,要更新;否则不更新
if (Integer.parseInt(newNums[i]) > currentValue) {
return true;
} else if (Integer.parseInt(newNums[i]) <= currentValue) {
// return false;
}
}
return false;
} else if (newNums.length <= indexNums.length) {
for (int i = 0; i < indexNums.length; i++) {
//位数不够,给服务器版本补零
int newValue = 0;
if(i < newNums.length){
newValue = Integer.parseInt(newNums[i]);
}
// 服务器上同位版本数如果有一个数大于 当前的,就是最新版,要更新;否则不更新
if (newValue > Integer.parseInt(indexNums[i])) {
return true;
} else if (newValue <= Integer.parseInt(indexNums[i])) {
// return false;
}
}
return false;
}
}
return false;
}
// 获取当前版本的版本号
public static String getCurrentVersion(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(context.
getPackageName(), 0);
Log.d("TAG", "getCurrentVersion: 版本值--》"+packageInfo.versionCode);
Log.d("TAG", "getCurrentVersion: 版本号--》"+packageInfo.versionName);
return packageInfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
return null;
}
}