2011-09-12 9 views
0

Androidプログラミングに関する質問があります。私はアンドロイド2.2以上のアプリケーション(タブレットを含む)をプログラムするつもりです。さまざまなバージョンのAPIニュースが異なる、という問題があります。ダウンロードマネージャは、2.3で初めて完全に実装されています。2.2では、手動でプログラムを作成する必要があります。私はモジュールからアプリケーションをビルドすることを考えています。それぞれのモジュールは、特定のAndroid OSバージョン用です。あなたはメインアプリケーションとしてそれを想像することができますし、実際のOSに応じて、それはAndroid 2.3 APIダウンロードマネージャを起動します(2.2の場合)は私のカスタムダウンロードマネージャを起動します。特定のAndroidバージョン用プログラミング

問題は、コードで解決する方法ですか? 2.2の.javaファイルにDownload Managerのインポートとコードを入力して使用すると、アプリケーションをビルドできません。私はアプリケーションのコアと現在のデバイスのAPIレベルに応じて外部ソースから読み取る他の "モジュール"のみをインストールするDexClassLoaderソリューションを見つけました。それは "汚い"アプローチのように私には聞こえる、APIレベルによって異なる特定のコードを解決する方法は何も "クリーナー"ではないですか?

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

例外がある場合:

は、クラス(例えばDownloadManager)は、このようにクラスをロードしようとすることで実行しているシステム上で利用可能であるかどうかを確認する方法は、あり屋

+0

2.2コードがそこにないものに当たらないようにする必要があるので、downloadManagerOldとdownloadManagerNewの2つのクラスに分けて、必要に応じて呼び出します。 – Rob

+0

そうですが、2.2のプロジェクトに両方のバージョン(古いものと新しいもの)を入れると、新しいダウンロードマネージャーのコードが不明なのでプロジェクトをビルドしません – Waypoint

+0

2.3のビルドと2.2のminSDKを設定します。 – Rob

答えて

1

ありがとうございましたスローされた、あなたはクラスが利用できないことを知っています。次に、自分のクラスを使用する必要があります。 一方、クラスが使用可能な場合は、別のクラスを使用して使用する必要があります。

したがって、特定のシステムで利用できないAPIを呼び出すクラスは、サポートされていないシステムにはロードされません。

もちろん、この場合、実装するクラスをサポートするTargetSDKを使用する必要があります。

+0

ありがとうございますこれは可能な解決策の1つですが、話されていないモジュールは解決策nrです。 2 – Waypoint

関連する問題