diff --git a/app/src/main/java/org/lineageos/updater/misc/Utils.java b/app/src/main/java/org/lineageos/updater/misc/Utils.java index b7ba720..cb9e407 100644 --- a/app/src/main/java/org/lineageos/updater/misc/Utils.java +++ b/app/src/main/java/org/lineageos/updater/misc/Utils.java @@ -112,11 +112,25 @@ public class Utils { return true; } + private static boolean compareVersions(String a, String b) { + try { + int majorA = Integer.parseInt(a.split("\\.")[0]); + int minorA = Integer.parseInt(a.split("\\.")[1]); + + int majorB = Integer.parseInt(b.split("\\.")[0]); + int minorB = Integer.parseInt(b.split("\\.")[1]); + + return majorA == majorB && minorA >= minorB; + } catch (ArrayIndexOutOfBoundsException | NumberFormatException e) { + return false; + } + } + public static boolean canInstall(UpdateBaseInfo update) { return (SystemProperties.getBoolean(Constants.PROP_UPDATER_ALLOW_DOWNGRADING, false) || update.getTimestamp() > SystemProperties.getLong(Constants.PROP_BUILD_DATE, 0)) && - update.getVersion().equalsIgnoreCase( - SystemProperties.get(Constants.PROP_BUILD_VERSION)); + compareVersions( + update.getVersion(), SystemProperties.get(Constants.PROP_BUILD_VERSION)); } public static List parseJson(File file, boolean compatibleOnly)