首页 > 解决方案 > 使用 compareTo 增加应用程序版本名称

问题描述

我使用一个 android 应用程序(我们可以称之为“AppA”)来更新另一个应用程序(我们可以称之为“AppB”)。应用程序“AppA”检查“AppB”的版本名称,如果它较低,则更新开始。

我使用本机函数“compareTo”检查 versionName。所以这是我的问题:“AppB”版本名称是 9.9,最新版本名称是 9.10,但更新没有开始,因为“compareTo”函数结果是“9.9 > 9.10”。即使我使用像“10.9”或“9.100”这样的新版本名称,9.9 总是更大。

我应该放什么?

标签: javaandroidfunctionandroid-studiocompareto

解决方案


您可以使用版本名称9.9.1来更新它,因为"9.9".compareTo("9.9.1") < 0.

您也可以使用9.90,9.91等,因为每个较长的字符串都会更新


有了新的更新,您应该发布一个新的比较器,查看每个组件,例如:

int[] compOld = new int[3];
String[] split = versionOld.split(".");
for (int i = 0; i < split.length; i++)
    compOld = Integer.parseInt(split[i]);
int[] compNew = new int[3]
...
return compOld[0] < compNew[0] || compOld[1] < compNew[1] || compOld[2] < compNew[2];

或者查看用于语义版本控制的库。


推荐阅读