我需要将应用程序版本转换为Int
或Float
进行比较。
我正在使用以下语法,但是会抛出java.lang.NumberFormatException
。
val currentVersion = BuildConfig.VERSION_NAME.toFloat()
编辑:如果我需要将“ 2.2”转换为浮点数怎么办?
答案 0 :(得分:2)
通常,版本名称的写法如下:“ 1.0.0”(当然,您可以解析字符串,然后获取3个数字:“ 1”,“ 0”和“ 0”),因此无法将其转换为数字格式。您还可以使用 VERSION_CODE 它将返回一个数字
答案 1 :(得分:2)
应用程序版本比较非常简单,例如比较版本1.0
和2.0
。
但是如果要比较的版本是1.0.2-rc2
和1.0.2-rc3
或2.0.0-beta
和2.0.0
,有时会变得很复杂。在这种情况下,您不能只转换{{1 }}转换为versionName
或Int
类型。顺便说一句,最有可能导致未来无法证明的原因是,Float
被认为是比1.19
更旧的版本。
为了使此比较容易,您可以检查此库-Version Compare (github)。 (或者-Semver4j)我认为它将处理大多数情况。
此外,您可以在此post中阅读有关版本控制的更多信息。
答案 2 :(得分:0)
如果您得到NumberFormatException
,则表示该字符串不是数字的有效表示形式。
您的BuildConfig.VERSION_CODE是有效的Int,可以使用吗?