JonaNorman 1 år sedan
förälder
incheckning
71f82f10a2

+ 2 - 1
app/src/main/java/com/norman/webviewup/demo/MainActivity.java

@@ -23,6 +23,7 @@ import com.norman.webviewup.lib.source.UpgradePackageSource;
 import com.norman.webviewup.lib.source.UpgradeSource;
 import com.norman.webviewup.lib.source.download.UpgradeDownloadSource;
 import com.norman.webviewup.lib.util.ProcessUtils;
+import com.norman.webviewup.lib.util.VersionUtils;
 
 import java.io.File;
 import java.util.Arrays;
@@ -184,7 +185,7 @@ public class MainActivity extends Activity implements UpgradeCallback {
                 } else {
                     UpgradeInfo upgradeInfo = upgradeInfoList.get(which);
                     if (WebViewUpgrade.getSystemWebViewPackageName().equals(upgradeInfo.packageName)
-                            && WebViewUpgrade.getSystemWebViewPackageVersion().compareTo(upgradeInfo.versionName) >= 0) {
+                            && VersionUtils.compareVersion( WebViewUpgrade.getSystemWebViewPackageVersion(),upgradeInfo.versionName) >= 0) {
                         Toast.makeText(getApplicationContext(), "system webView is larger than the one to be upgraded, so there is no need to upgrade", Toast.LENGTH_LONG).show();
                         return;
                     }

+ 22 - 0
core/src/main/java/com/norman/webviewup/lib/util/VersionUtils.java

@@ -0,0 +1,22 @@
+package com.norman.webviewup.lib.util;
+
+public class VersionUtils {
+    public static int compareVersion(String version1, String version2){
+        if (version1 == null || version2 == null) {
+           return 0;
+        }
+        String[] versionArray1 = version1.split("\\.");
+        String[] versionArray2 = version2.split("\\.");
+        int idx = 0;
+        int minLength = Math.min(versionArray1.length, versionArray2.length);
+        int diff = 0;
+        while (idx < minLength
+                && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0
+                && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {
+            ++idx;
+        }
+        //如果已经分出大小,则直接返回,如果未分出大小,则再比较位数,有子版本的为大;
+        diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
+        return diff;
+    }
+}