Jelly Bean已经问世,它们有一些相当不错的功能。我的问题是,我希望尽可能多地设备设备,但同时拥有一个可以使用最高API级别的所有功能的应用程序。
所以说例如我有这个
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="16"/>
我在API 16上构建我的应用程序。有没有办法限制代码的某些部分,只有在运行能够运行它的设备时才运行?例如,如果我想要NFC,那么只有姜饼设备及以上才能使用该功能,否则froyo down甚至不会看到该功能。
答案 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
}
希望这有帮助。