了解Android API级别

时间:2012-07-04 21:00:03

标签: android android-api-levels

Jelly Bean已经问世,它们有一些相当不错的功能。我的问题是,我希望尽可能多地设备设备,但同时拥有一个可以使用最高API级别的所有功能的应用程序。

所以说例如我有这个

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

我在API 16上构建我的应用程序。有没有办法限制代码的某些部分,只有在运行能够运行它的设备时才运行?例如,如果我想要NFC,那么只有姜饼设备及以上才能使用该功能,否则froyo down甚至不会看到该功能。

2 个答案:

答案 0 :(得分:6)

基本上,您可以使用从Android 3.0引入的许多新API(例如,Fragment引擎),包括Android Support v4作为Referenced Library。

你可以在这里找到一些参考:

http://developer.android.com/reference/android/support/v4/app/package-summary.html

在这里:

http://developer.android.com/tools/extras/support-library.html

另一方面,如果您想使用NFC功能,您可以声明此使用功能:

 <uses-feature android:name="android.hardware.nfc" android:required="true" />

或者,如果您想为不支持此功能的设备提供替代代码,您可以执行以下操作:

 if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) {
        //code for devices with NFC support
 } else {
      //code for others devices
 }

答案 1 :(得分:2)

从ADT r16开始,我们可以使用Lint扫描并检查所有新API的项目,详情请查看我的答案here

  

NewApi:查找对所有目标API版本都不支持的API的API访问。

或者,您可以通过API级别对代码进行条件分支,而不是按功能(Stefano的答案)对条件进行条件分支:

if (android.os.Build.VERSION.SDK_INT >= 9) {
  // do NFC stuff
}

希望这有帮助。