2

Jelly Bean 已经问世,它们有一些非常不错的功能。我的问题是,我想针对尽可能多的设备,但同时有一个应用程序,如果可能的话,可以使用最高 API 级别的所有功能。

所以比如说我有这个

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

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

4

2 回答 2

6

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

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

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
 }
于 2012-07-04T21:09:57.553 回答
2

从 ADT r16 开始,我们可以使用 Lint 扫描并检查所有新 API 的项目,请在此处查看我的答案以获取详细信息:

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

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

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

希望这可以帮助。

于 2012-07-04T21:36:42.833 回答