2011-09-12 49 views
0

我有一個關於Android編程的問題。我打算編寫Androiod 2.2及更高版本的應用程序(包括平板電腦)。我面對的問題是,各種版本都有不同的API新聞,例如下載管理器在2.3中首次完全實現,在2.2中我必須手動編程。我正在考慮從模塊構建我的應用程序,其中每個模塊都適用於特定的Android操作系統版本。你可以把它想象成主要的應用程序,根據實際的操作系統,它會觸發Android 2.3 API下載管理器或(在2.2的情況下)啓動我自定義的下載管理器。針對特定Android版本的編程

問題是,如何在代碼中解決它?因爲,當我進入我的2.2項目的.java文件,下載管理器導入並使用它的代碼時,我無法構建應用程序。我發現了DexClassLoader解決方案,我只安裝應用程序的核心和其他「模塊」,我將根據當前設備的API級別從外部來源讀取。這聽起來像「骯髒」的做法,是不是有什麼「更清潔」如何解決特定的代碼片段,根據API的水平不同?

感謝亞

+0

您需要確保2.2代碼不會觸及任何不存在的內容,因此請將下載管理器分成兩類,downloadManagerOld和downloadManagerNew,並在必要時調用它們。 – Rob

+0

是的,但如果我在2.2項目中同時使用了兩個版本(舊版本和新版本),我將不會構建我的項目,因爲新下載管理器的代碼將是未知的 – Waypoint

+0

將版本設置爲2.3,將minSDK設置爲2.2。 – Rob

回答

1

有一種方法來檢查,如果一個類(如下載管理器)可在運行的系統上通過嘗試加載類是這樣的:如果該異常是

try { 
Class.forName(className); 
} catch (ClassNotFoundException e) { 
} 

拋出,你知道這個班不可用。然後你必須使用你自己的班級。另一方面,如果班級可用,則必須使用單獨的班級才能使用班級。

因此,包含調用API的類在某些系統上不可用的類永遠不會加載到不支持的系統上。

當然,在這種情況下,您必須使用支持您要實現的類的TargetSDK。

+0

謝謝這是可能的解決方案之一,模塊,這是沒有被討論過,是解決方案nr。 2 – Waypoint

相關問題