Android 用versionName判斷版本大小(是否進行版本更新)


一般情況下都是用versionCode進行版本大小的判斷從而進行判斷是否進行app的更新,但是有可能從網站上爬下來的versionCode不准確,有的網站叫做build,所以用versionName進行判斷是比較准確的。
網上用versionName進行版本號的判斷不多,百度出來的幾乎都是用versionCode進行判斷,我就像那丁香花姑娘一樣惆悵。
所以就自己摸索,就目前的二級版本號,可以直接轉為Float類型進行判斷,但是公司的版本號后續可能還會加上Beta等,就想着說用字符串分割,數字歸數字,字母歸字母。然鵝,判斷極其復雜,因為情景頗多,所以分割極其不便。在分割比較的過程中,從記憶深處挖掘出了一行代碼,直接進行字符串比較 !!!

//獲取本地的版本號
String localVersion = BaseApplication.getContext().getPackageManager().
                                        getPackageInfo(BaseApplication.getContext().getPackageName(), 0).versionName;
DataBean data = dataBean.getData();  //從網站上爬下來的數據
if (data != null){
     //獲取線上版本號
     String onlineVersion = data.getVersion();
     if (localVersion.compareTo(onlineVersion) < 0){  //相等返回0,前者大返回值大於0,前者小返回值小於0
        //TODO 進行版本更新操作
     }
}

但是搜索上沒有搜到,是因為它太簡單了?還是因為有弊端?需要各位同胞們指出,在此先謝過~


(2020.11.24更新)

經前輩提醒,這樣做是有弊端的,如果非要用versionName比較的話,可以考慮麻煩一點的,通過 “ . ” 來切割成字符串成數組,轉成int類型去比較,按順序比較,比較到split[length - 2]的處,若有對比出大小之后就停止比較,若都相等,再對最后split[length - 1]進行判斷。若split[length - 1]都是數字就容易判斷,但卻有可能包含類似於beta1、beta2這樣的情況,emmmm。。。后續有想到好的方法,再來更新,如果有前輩們有好的方法,請不吝賜教。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM