2012-07-04 71 views
2

果冻豆出来了,他们有一些相当不错的功能。我的问题是,我想尽可能多地使用各种设备,但同时有一个应用程序,如果可能的话,可以使用最高API级别的所有功能。了解Android API级别

所以说,比如我有这个

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

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

回答

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 
} 
+0

所以说例如我建设使用API​​级别16,包括V4,如果我的设备运行API 9姜饼,那么我可以获得运行姜饼设备碎片?那么v4 api将会覆盖api level 16所包含的内容,并且会对它进行编译,这样gingerbead就会明白了吗? – Springy

+1

是的,当然.. –

2

由于ADT R16,我们可以用棉绒扫描和检查项目的所有新的API,检查我的答案here的详细信息:

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

另一方面,不是条件分支代码的功能(斯特凡诺的回答),你也可以有条件分支代码通过API级别:

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

希望这有助于。