網上找了很多方法都不太靠譜,有問題,自己改了改,親試可以
大家都知道,版本號一般由以下幾部分組成:
1. 主版本號
2. 次版本號
3. 修正版本號
4. 編譯版本號
例如:2.1.3 ,3.7.5,10.2.0
在比較版本號時,正確的做法應該是,主版本號和主版本號比較,次版本號和次版本號比較等等,也就是把版本號分割,對應的組成之間進行比較,如下:
/**
* 版本號比較
*
* @param version1
* @param version2
* @return
*/
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
Log.d("HomePageActivity", "version1Array=="+version1Array.length);
Log.d("HomePageActivity", "version2Array=="+version2Array.length);
int index = 0;
// 獲取最小長度值
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
// 循環(huán)判斷每位的大小
Log.d("HomePageActivity", "verTag2=2222="+version1Array[index]);
while (index < minLen
&& (diff = Integer.parseInt(version1Array[index])
- Integer.parseInt(version2Array[index])) == 0) {
index++;
}
if (diff == 0) {
// 如果位數不一致,比較多余位數
for (int i = index; i < version1Array.length; i++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}
結果說明:0代表相等,1代表version1大于version2,-1代表version1小于version2
over~~