Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f41dc0cc authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Updater: Fix checking android version

parent 9d365eb7
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -61,7 +61,9 @@ import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -123,15 +125,27 @@ public class Utils {
        return update;
    }

    public static int parseAndroidVersion(String versionString) {
        // Parse android versions such as 8.1.0.
        // Older updates still shows in ota requests.
        Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)");
        Matcher matcher = pattern.matcher(versionString);
        return matcher.matches() ? Integer.parseInt(Objects.requireNonNull(matcher.group(1)))
                : Float.valueOf(versionString).intValue();
    }

    public static boolean isCompatible(UpdateBaseInfo update) {
        if (!update.getAndroidVersion().isEmpty()) {
            final int majorAndroidVersion = Integer.parseInt(update.getAndroidVersion().contains(".") ? update.getAndroidVersion().split(".")[0] : update.getAndroidVersion());
            final int majorDeviceAndroidVersion = Integer.parseInt(Build.VERSION.RELEASE.contains(".") ? Build.VERSION.RELEASE.split(".")[0] : Build.VERSION.RELEASE);   
            if (majorDeviceAndroidVersion >  majorAndroidVersion) {
                    Log.d(TAG, "Update : removing " + update.getName() + " current " + majorDeviceAndroidVersion+" update " + majorAndroidVersion);
        String updateAndroidVersion = update.getAndroidVersion();
        if (!updateAndroidVersion.isEmpty()) {
            final int updateOSVersion = parseAndroidVersion(updateAndroidVersion);
            final int deviceOSVersion = parseAndroidVersion(Build.VERSION.RELEASE);
            if (deviceOSVersion > updateOSVersion) {
                Log.d(TAG, "Update : Skipping " + update.getName() + " since the installed version "
                        + deviceOSVersion + " is newer than update " + updateOSVersion);
                return false;
            }
        }

        int[] updateVersionParts = parseSemVer(update.getVersion());
        int updateMajorVersion = updateVersionParts[0];
        int updateMinorVersion = updateVersionParts[1];