支持更高版本的android api

时间:2014-07-03 08:59:55

标签: android

我想启动NFC设置活动,这是在API级别16之前使用操作ACTION_WIRELESS_SETTINGS完成的。但是在API级别16及更高版本中,它使用ACTION_NFC_SETTINGS完成。 我正在使用Android 4.0.3(API级别15)编译我的源代码。 如何支持更高级别,以便可以在所有版本中打开NFC设置。 我是否需要使用API​​级别16或更高版本编译我的源代码并制作min sdk版本15?

2 个答案:

答案 0 :(得分:0)

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
//do stuff

}
你的意思是?

答案 1 :(得分:0)

您通常会使用您在代码中使用的最高API版本的SDK(或最新的可用SDK)来编译您的应用程序。在您应用的清单中,您可以添加最低版本和目标SDK版本:

<uses-sdk android:minSdkVersion="..." android:targetSdkVersion="..." />

这些值定义了如何根据(向后)兼容性功能在设备上处理您的应用。

然后,在您的代码中,每当您使用某个API级别上不可用的API调用时,您可以检查Build.VERSION.SDK_INT(如JaKoZo所示)来围绕这些调用。< / p>

关于NFC设置,即使没有检查也可以做到,而是捕获在ACTION_NFC_SETTINGS意图没有注册任何活动时引发的异常:

try {
    this.startActivityForResult(
            new Intent(android.provider.Settings.ACTION_NFC_SETTINGS),
            1); // magic number to detect when this startActivityForResult returns
} catch (Exception e) {
    try {
        this.startActivityForResult(
                new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS),
                1); // magic number to detect when this startActivityForResult returns
    } catch (Exception e1) {
    }
}

您也可以使用硬编码字符串ACTION_NFC_SETTINGS,而不是常量"android.settings.NFC_SETTINGS"。虽然我不是真的推荐这个,但你不需要建立更高的API级别(如果它只是那个导致你这样做的常量)。

[...]
    this.startActivityForResult(
            new Intent("android.settings.NFC_SETTINGS"),
            1); // magic number to detect when this startActivityForResult returns
[...]