使用Java代碼來(lái)比較Android客戶端版本號(hào)
關(guān)鍵點(diǎn)
為什么不能使用String.compareTo方法來(lái)比較客戶端版本號(hào)?
舉個(gè)例子,之前客戶端版本號(hào)為:9.9.9,而服務(wù)器端最新的客戶端版本號(hào)為:10.0.1,雖然10.0.1明顯高于9.9.9,但是按照compareTo方法,這個(gè)9.9.9是大于10.0.1的,導(dǎo)致客戶端版本號(hào)比較錯(cuò)誤。
Java代碼實(shí)現(xiàn)
扯了一些,最后還是要show一下代碼的,以下是我的客戶端版本號(hào)比較代碼,歡迎吐槽。
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
int index = 0;
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
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;
}
}
- Android Studio 修改應(yīng)用包名實(shí)例詳解
- java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名
- Android5.1系統(tǒng)通過(guò)包名給應(yīng)用開(kāi)放系統(tǒng)權(quán)限的方法
- Android編程獲取APP應(yīng)用程序基本信息輔助類【APP名稱、包名、圖標(biāo),版本號(hào)等】
- Android獲取應(yīng)用版本號(hào)與版本名稱
- Android獲取手機(jī)型號(hào)/系統(tǒng)版本號(hào)/App版本號(hào)等信息實(shí)例講解
- Android獲取當(dāng)前手機(jī)網(wǎng)絡(luò)類型(2g、3g、4g、wifi)以及手機(jī)型號(hào)、版本號(hào)代碼
- Android通過(guò)aapt命令獲取apk詳細(xì)信息(包括:文件包名,版本號(hào),SDK等信息)
- Android 獲取未安裝的APK圖標(biāo)、版本號(hào)、包名等信息方法
- Android編程實(shí)現(xiàn)應(yīng)用獲取包名、版本號(hào)、權(quán)限等信息的方法
相關(guān)文章
Spring IOC 能降低耦合的問(wèn)題分析及解決方法
這篇文章主要介紹了Spring IOC 為什么能降低耦合,依賴注入是調(diào)用者僅通過(guò)聲明某個(gè)組件就可以獲得組件的控制權(quán),而對(duì)該組件的依賴關(guān)系管理、查找、加載由外部完成,需要的朋友可以參考下2022-06-06
@Autowired自動(dòng)裝配,@Bean注入@Primary,@Qualifier優(yōu)先級(jí)講解
這篇文章主要介紹了@Autowired自動(dòng)裝配,@Bean注入@Primary,@Qualifier優(yōu)先級(jí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
使用Java實(shí)現(xiàn)系統(tǒng)托盤功能的介紹(附源碼以及截圖)
本篇文章介紹了,在Java中實(shí)現(xiàn)系統(tǒng)托盤功能的詳解,文中附源碼以及截圖介紹。需要的朋友參考下2013-05-05
SpringBoot實(shí)現(xiàn)動(dòng)態(tài)加載外部Jar流程詳解
這篇文章主要介紹了SpringBoot動(dòng)態(tài)加載外部Jar的流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-05-05
Opencv創(chuàng)建車牌圖片識(shí)別系統(tǒng)方法詳解
本文主要介紹了一個(gè)基于spring?boot+maven+opencv實(shí)現(xiàn)的圖像識(shí)別及訓(xùn)練項(xiàng)目,可以實(shí)現(xiàn)車牌識(shí)別功能,感興趣的可以跟隨小編一起試一試2022-01-01
Java日志相關(guān)技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java日志相關(guān)技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理的相關(guān)資料,需要的朋友可以參考下2017-07-07
Java之Spring AOP 實(shí)現(xiàn)用戶權(quán)限驗(yàn)證
本篇文章主要介紹了Java之Spring AOP 實(shí)現(xiàn)用戶權(quán)限驗(yàn)證,用戶登錄、權(quán)限管理這些是必不可少的業(yè)務(wù)邏輯,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-02-02

