一般情況下都是用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。。。后續有想到好的方法,再來更新,如果有前輩們有好的方法,請不吝賜教。