前言:因為項目更新的時候需要一些版本號的信息,后台返回兩個string,一個是最低兼容版,一個是最新版。所以拿到數據后要比較一下,所以封裝了一個Common包來處理。
Step 1
廢話不多說,直接上代碼。
1 public class Common{ 2 /** 3 * 獲取版本號 4 * 5 * @return 當前應用的版本號 6 */ 7 public static String getVersion(Context context) { 8 try { 9 PackageManager manager = context.getPackageManager(); 10 PackageInfo info = manager.getPackageInfo(context.getPackageName(), 11 0); 12 String version = info.versionName; 13 return version; 14 } catch (Exception e) { 15 e.printStackTrace(); 16 return ""; 17 } 18 } 19 20 /** 21 * 版本號比較 22 * 23 * @param version1 24 * @param version2 25 * @return 26 */ 27 public static int compareVersion(String version1, String version2) { 28 if (version1.equals(version2)) { 29 return 0; 30 } 31 String[] version1Array = version1.split("\\."); 32 String[] version2Array = version2.split("\\."); 33 34 int index = 0; 35 // 獲取最小長度值 36 int minLen = Math.min(version1Array.length, version2Array.length); 37 int diff = 0; 38 // 循環判斷每位的大小 39 Log.d("HomePageActivity", "verTag2=2222="+version1Array[index]); 40 while (index < minLen 41 && (diff = Integer.parseInt(version1Array[index]) 42 - Integer.parseInt(version2Array[index])) == 0) { 43 index++; 44 } 45 if (diff == 0) { 46 // 如果位數不一致,比較多余位數 47 for (int i = index; i < version1Array.length; i++) { 48 if (Integer.parseInt(version1Array[i]) > 0) { 49 return 1; 50 } 51 } 52 53 for (int i = index; i < version2Array.length; i++) { 54 if (Integer.parseInt(version2Array[i]) > 0) { 55 return -1; 56 } 57 } 58 return 0; 59 } else { 60 return diff > 0 ? 1 : -1; 61 } 62 } 63 64 }
Step 2
使用方法:
如何獲取版本號: Common.getVersion(context)
如何比較版本號: Common.compareVersion(Common.getVersion(context),“要比較的版本號”)
1.上面的值為-1 代表:前者小於后者
2.上面的值為0 代表:兩者相等
3.上面的值為1 代表:前者大於后者
