2012-06-04 129 views
3

我現在在開發基於最新API(15 ICS)的15個活動的Android應用程序中處於領先地位。現在我發現,該應用程序的主要功能主義不向後兼容甚至與機器人v4的載體如:Android向後兼容技術

1- fragmentTransaction動畫 -2-中sharedPref能力putStringSet 3-具有使用mapActivity片段

我曾考慮爲每個類的老操作系統創建第二個版本,這個版本存在不兼容問題(大約10),所以如果我檢測到運行該應用程序的設備是舊的,我會使用它們。但是,我相信這是一種愚蠢的方式,並且有更好的方式來做到這一點。

什麼是使你的代碼與API 7兼容,不離更高的API(至少要用於新設備)所提供的功能的最佳途徑

+0

即使我想知道它的答案,因爲當我遇到這樣的問題時,我爲低版本開發了一個不同的應用程序。但我想它沒關係,因爲它很容易分別處理較低版本和較高版本。 – Shrikant

+0

@Krishnabhadra,很好的電話。我剛剛接受了一些答案(速率仍然很低,因爲其他人沒有真正回答我的問題) – AlAsiri

回答

0

您可以檢查Android的API級別在運行時並根據API級別啓用所需的功能。

像下面這樣的東西。

int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH){ 
// Do something for ICS and above versions 
} else{ 
// do something for phones running an SDK before ICS 
} 

此外,您可以版本限定符添加到資源文件夾,例如繪製-V15(將皮卡繪項目,如果設備API級別爲15)

檢查這個LINK關於如何指定更多信息必需的資源限定符

使用此功能可在最新固件設備上啓動時啓用最新功能,否則將啓用向後兼容性。

+0

感謝您的回答Sudhaker, 我知道運行時檢測能力,但是我的更改以我聲明整個班級的方式進行。 例如,如果<10那麼我擴展TabActivity否則我擴展片段。 – AlAsiri

+0

感謝您的好消息。我知道運行時版本的檢測能力,但我必須改變我相應聲明類的方式,這不是我想要的,我可以在代碼中進行更改(除了創建不同版本的類)。例如,如果API <10擴展TabActivity否則擴展片段 – AlAsiri

+0

您可以創建一個重定向啓動器活動,在該活動中它將檢查設備運行的SDK的當前版本,並根據要求在運行時啓動相應的目標活動。 (雖然沒有嘗試過)。 – Sudhaker