Сравнение строк версии ОС - PullRequest
0 голосов
/ 13 июня 2018

Согласно https://developer.android.com/reference/android/os/Build.VERSION.html#RELEASE, Build.VERSION.RELEASE содержит строку типа «3.4b5», в то время как я ожидал последовательность чисел, разделенных точкой (.), Например «8.1.0».

Любые идеи о том, когда я буду видеть символы в версиях ОС, и хорошая логика сравнения для сравнения текущей версии ОС с фиксированной строкой (скажем, 7.0.0).

1 Ответ

0 голосов
/ 13 июня 2018

Для сравнения номеров версий вы можете сделать что-то вроде этого:

//  compare two strings, e.g. "5.8.0" with "1.88.3"
public int compare(String v1, String v2) {
    String s1 = normalisedVersion(v1);  //  normalized to "   5   8   0"
    String s2 = normalisedVersion(v2);  //  normalized to "   1  88   3"
    return s1.compareTo(s2);            //  returns -1 for lower, 0 equal and 1 for greater
}

public String normalisedVersion(String version) {
    return normalisedVersion(version, ".", 4);
}

public String normalisedVersion(String version, String sep, int maxWidth) {
    String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version);
    StringBuilder sb = new StringBuilder();
    for (String s : split) {
        sb.append(String.format("%" + maxWidth + 's', s));
    }
    return sb.toString();
}
...