2

最小 API レベルを 7 に設定して、ほとんどのアプリを問題なく作成しました。レベル 8 から単一の API を呼び出したいと考えています。Android のバージョンが低いユーザーは、この「追加機能」がなくても生き残ることができます。

@SuppressLint("NewApi")現在、コードを実行できるように追加しました。API 14でテストしています。すべて正常に動作します。

API 7 デバイスでアプリがどのように動作するのか気になります。この1行は無視されますか?私のアプリはクラッシュしますか? インストールできないように、アプリは Google Play によってフィルタリングされますか?

下位のデバイスでは、この 1 行を無視したいと思います。

4

3 に答える 3

11

この1行は無視されますか?

いいえ。

私のアプリはクラッシュしますか?

見事に。:-)

インストールできないように、アプリは Google Play によってフィルタリングされますか?

いいえ。

下位のデバイスでは、この 1 行を無視したいと思います。

2 つの問題があります。

  1. @SuppressLint("NewApi")クイックフィックスの選択が間違っていた

  2. 古いデバイスでこの行を回避するコードを追加していません

@TargetApi(...)の代わりに@SuppressLint("NewApi")使用します。 は、メソッドが参照しているコード...の名前 (例: FROYO) または番号 (例: ) です。8

ただし、それを行う前に、問題のある行をチェックでラップして、このデバイスで実行する必要があるかどうかを確認してください。

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.FROYO) {
  // then execute your code that requires API Level 8
}
// optional else block if you have some workaround for API Level 7

あなたのifチェックは、あなたのラインが回避される原因となります。あなたの@TargetApi注釈により、Lint はあまりにも新しいクラスやメソッドを参照していると怒鳴らなくなります。

于 2013-04-26T19:32:00.020 に答える
3

これは巻いたほうがいい

import android.os.Build;

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.ECLAIR_MR1) {
    // do what you want
}
于 2013-04-26T19:31:20.970 に答える