私が正しくあなたの質問を読んでいるなら、これはあなたがあなたのプロジェクトの目標、すなわちしたい任意のターゲットに設定することができますアプリケーションは、レベルの開発のために7
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="12" />
を持つデバイスにインストールすることができるようになることができますSDK 4.0ではマニフェストターゲットは1.5(アンドロイド:targetSdkVersion = "3")、またはその逆になります。 Eclipseは警告を表示しますが、結果を考慮に入れていれば、任意のターゲットに対して開発して、どのターゲットにもマニフェストを設定することができます。
レベル7に存在しないメソッドを呼び出そうとすると、アプリケーションがクラッシュしないようにするために、コード内で行う作業が少しあります。いくつかの例が必要な場合。
編集:
私に適した例です。
/**
* Get the current SDK version as an integer. If we are using 1.5 the SDK is
* returned as a String so using the Build.VERSION.SDK_INT method will cause
* the application to crash. This method will return 3 if the version is 1.5
* and will return the proper result for Build.VERSION.SDK_INT if that
* method is available.
*
* @return
*/
public static int getSdkInt() {
if (Build.VERSION.RELEASE.startsWith("1.5"))
return 3;
try {
return YourInternalClass.getSdkIntInternal();
} catch (VerifyError e) {
Log.e(TAG, e.toString());
return 3;
}
}
内部クラスに存在しない可能性のあるメソッドを呼び出すと、メソッドが呼び出されるまでロードされません。
private static class YourInternalClass {
private static int getSdkIntInternal() {
return Build.VERSION.SDK_INT;
}
}
ここでSDKのバージョンを確認できます。 7以上のパッケージにのみ存在するメソッドがある場合は、これらのメソッドを内部クラスに配置します。その後、私はこれを行うには良い方法はおそらくあり確信している(と私は、誰かがそれを投稿することを願っています)
if(TheClassYouPutThisMethodIn.getSDKInt() >= 12)
YourInternalClass.yourLevel12Method();
を行うことができますが、それは私のために素晴らしい作品。レベル3の携帯電話で安全に実行されているSDK 13のメソッドを使用するアプリケーションがあります。
これが役に立ちます。
ありがとう - 私はこれを試してみます。私のケースでは、レベルに応じて私はちょうど1つの機能を無効/有効にするので、チェックは本当に簡単です。しかし、あなたが助けることができるいくつかのコードサンプルがあれば、とても親切で掲示してください。 – user387184