2012-07-04 98 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 
} 

希望這有助於。