2016-08-23 2 views
0

Как сравнить версию приложения в андроидСравнение версии приложения

Я получил последнюю версию кода и текущий код версии, но проблема

current version is 1.0

и latest version is 1.0.0

так как сравнить это значение поплавка в android

+0

что вы пробовали до сих пор ?? –

+0

if (Float.valueOf (currentVersion) Aaaaaa1212

+1

это дает numberformatexception – Aaaaaa1212

ответ

0

Использование следующий метод для сравнения номера версий:

Преобразование поплавка в строку сначала.

public static int versionCompare(String str1, String str2) { 
    String[] vals1 = str1.split("\\."); 
    String[] vals2 = str2.split("\\."); 
    int i = 0; 
    // set index to first non-equal ordinal or length of shortest version string 
    while (i < vals1.length && i < vals2.length && vals1[i].equals(vals2[i])) { 
     i++; 
    } 
    // compare first non-equal ordinal number 
    if (i < vals1.length && i < vals2.length) { 
     int diff = Integer.valueOf(vals1[i]).compareTo(Integer.valueOf(vals2[i])); 
     return Integer.signum(diff); 
    } 
    // the strings are equal or one string is a substring of the other 
    // e.g. "1.2.3" = "1.2.3" or "1.2.3" < "1.2.3.4" 
    return Integer.signum(vals1.length - vals2.length); 
} 

См следующий SO вопрос: Efficient way to compare version strings in Java

1

NumberFormatException

Брошенный, чтобы указать, что приложение пытается преобразовать строку в один из числовых типов, но что строка не имеет соответствующего формата.

Звоните Float.compare для вашего требования.

float cur_Version = 1.0; //current version 
float latest_Version= 1.0.0; //latest version 

int checking= Float.compare(cur_Version , latest_Version); 

if(checking> 0) { 
    System.out.println("cur_Version is greater than latest_Version"); 
} 
else if(checking< 0) { 
    System.out.println("cur_Version is less than latest_Version"); 
} 
else { 
    System.out.println("cur_Version is equal to latest_Version"); 
} 

Для хорошего подхода вы можете посетить How do you compare two version Strings in Java?

0

Я написал небольшую Android библиотеку для сравнения номера версий: https://github.com/G00fY2/version-compare

Что в основном делает это:

public int compareVersions(String versionA, String versionB) { 
    String[] versionTokensA = versionA.split("\\."); 
    String[] versionTokensB = versionB.split("\\."); 
    List<Integer> versionNumbersA = new ArrayList<>(); 
    List<Integer> versionNumbersB = new ArrayList<>(); 

    for (String versionToken : versionTokensA) { 
     versionNumbersA.add(Integer.parseInt(versionToken)); 
    } 
    for (String versionToken : versionTokensB) { 
     versionNumbersB.add(Integer.parseInt(versionToken)); 
    } 

    final int versionASize = versionNumbersA.size(); 
    final int versionBSize = versionNumbersB.size(); 
    int maxSize = Math.max(versionASize, versionBSize); 

    for (int i = 0; i < maxSize; i++) { 
     if ((i < versionASize ? versionNumbersA.get(i) : 0) > (i < versionBSize ? versionNumbersB.get(i) : 0)) { 
     return 1; 
     } else if ((i < versionASize ? versionNumbersA.get(i) : 0) < (i < versionBSize ? versionNumbersB.get(i) : 0)) { 
     return -1; 
     } 
    } 
    return 0; 
    } 

Этот фрагмент не предлагает никаких проверок ошибок или обработки. Кроме того, моя библиотека также поддерживает суффиксы типа «1.2-rc»> «1.2-бета».

Смежные вопросы