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