目标KitKat MR2(4.4.3)?

时间:2014-08-18 14:46:49

标签: android

我有一段代码(实际上是我所包含的库)只能使用KitKat MR2(4.4.3)正常运行。

另一个MR似乎在Build.VERSION_CODES中拥有自己的API版本,但我找不到任何方法使用SDK_INT来定位4.4.3及更高版本。我应该只使用增量字符串字段并进行字符串比较吗?

// the "easy" (wrong) way
if(Build.VERSION.SDK_INT >= BUILD.VERSION_CODES.KIT_KAT) { // but that includes 4.4, 4.4.1, and 4.4.2!

}

// the "hard" way
if(compareVersionCodes(BUILD.VERSION.RELEASE, "4.4.3") > 0) { // implement some comparison function for the version codes instead

}

目标KIT_KAT是否可以接受 - 这意味着版本14还是版本15,每个人都自动获得更高版本?

1 个答案:

答案 0 :(得分:1)

  

我找不到使用SDK_INT

定位4.4.3及更高版本的方法

API级别用于更改二进制兼容性 - 比如新类,新方法等。它们不是用于修复错误,除非这些修复程序破坏了二进制兼容性。

  

我应该只使用增量字符串字段并进行字符串比较吗?

这不是很棒,但除非有某种方法可以查询蓝牙LE API以查看您是否在故障设备上,否则您可能需要走这条路。但是,今年晚些时候,我将检查算法设置为更像:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.WHATEVER_THEY_CALL_L ||
  (Build.VERSION.SDK_INT == Build.VERSION_CODES.KIT_KAT && getPatchLevel()>=3)) {
     // do your thing
}

getPatchLevel()尝试使用RELEASE查找补丁级别,如果RELEASE不是X.Y.Z形式,则会优雅地失败。这种方法将处理4.4.3 / 4.4.4场景以及下一个Android版本的编号。