Android 目标KitKat MR2(4.4.3)?

Android 目标KitKat MR2(4.4.3)?,android,Android,我有一段代码(实际上包括一个库),它只能使用KitKat MR2(4.4.3)正确运行 另一个MR似乎必须在Build.VERSION_代码中使用自己的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

我有一段代码(实际上包括一个库),它只能使用KitKat MR2(4.4.3)正确运行

另一个MR似乎必须在Build.VERSION_代码中使用自己的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版,每个人都会自动获得更高的版本

我找不到任何方法来使用SDK_INT以4.4.3及以上版本为目标

API级别用于二进制兼容性的更改——比如新类、新方法等。它们不用于bug修复,除非这些修复破坏了二进制兼容性

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

// 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

}
这并不可怕,但除非有某种方法可以查询Bluetooth 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版本的任何编号。

我很好奇,如果需要如此特定的版本,您可以做什么,如果你不想找个办法解决这个问题的话。但不,我认为假设每个kit-kat设备都将更新为mr2是不安全的。@Gabeschen这是一个蓝牙LE扫描库。在4.4.3之前,执行BLE扫描会导致蓝牙服务周期性崩溃。