Как сравнить версию приложения в андроидСравнение версии приложения
Я получил последнюю версию кода и текущий код версии, но проблема
current version is 1.0
и latest version is 1.0.0
так как сравнить это значение поплавка в android
Как сравнить версию приложения в андроидСравнение версии приложения
Я получил последнюю версию кода и текущий код версии, но проблема
current version is 1.0
и latest version is 1.0.0
так как сравнить это значение поплавка в android
Использование следующий метод для сравнения номера версий:
Преобразование поплавка в строку сначала.
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
Брошенный, чтобы указать, что приложение пытается преобразовать строку в один из числовых типов, но что строка не имеет соответствующего формата.
Звоните 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?
Я написал небольшую 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-бета».
что вы пробовали до сих пор ?? –
if (Float.valueOf (currentVersion)
Aaaaaa1212
это дает numberformatexception – Aaaaaa1212