Android 获取当前应用的版本号+版本号比较

     前言:因为项目更新的时候需要一些版本号的信息,后台返回两个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 }
View Code

 

  Step 2

  使用方法:

  如何获取版本号:   Common.getVersion(context)  

  如何比较版本号:   Common.compareVersion(Common.getVersion(context),“要比较的版本号”)

                                      1.上面的值为-1 代表:前者小于后者

            2.上面的值为0 代表:两者相等

              3.上面的值为1 代表:前者大于后者 

 

posted @ 2017-09-25 10:20  Jason_Jan  阅读(2066)  评论(0编辑  收藏  举报