2

Jelly Bean が登場しましたが、かなり優れた機能がいくつかあります。私の質問は、できるだけ多くのデバイスをターゲットにしたいのですが、同時に、可能であれば最高の API レベルのすべての機能を使用できるアプリを用意したいということです。

たとえば、私はこれを持っているとしましょう

<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="16"/>

また、API 16 でアプリケーションをビルドしています。コードの特定の部分を、それを実行できるデバイスを実行している場合にのみ実行するように制限する方法はありますか? たとえば、NFC が必要な場合、ジンジャーブレッド デバイス以降のみが機能を使用できます。

4

2 に答える 2

6

基本的に、参照ライブラリとして Android サポート v4 を含む、Android 3.0 から導入された新しい API (フラグメント エンジンなど) の多くを使用できます。

ここでいくつかの参照を見つけることができます:

http://developer.android.com/reference/android/support/v4/app/package-summary.html

そしてここ:

http://developer.android.com/tools/extras/support-library.html

一方、たとえば NFC 機能を使用する場合は、この use-feature を宣言できます。

 <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
 }
于 2012-07-04T21:09:57.553 に答える
2

ADT r16 以降、Lint スキャンを使用してすべての新しい API のプロジェクトを確認できます。詳細については、こちらの回答をご覧ください。

NewApi: 対象となるすべての API バージョンでサポートされていない API への API アクセスを検索します。

または、機能ごとにコードを条件分岐する (ステファノの回答) の代わりに、API レベルによってコードを条件分岐することもできます。

if (android.os.Build.VERSION.SDK_INT >= 9) {
  // do NFC stuff
}

お役に立てれば。

于 2012-07-04T21:36:42.833 に答える