1

私はAndroidライブラリを構築していて、デバイスに関する情報を取得する方法があります。私たちの目標は2.2以降をサポートすることですが、それ以降のバージョン(2.3のデバイスシリアル)で導入された情報を収集し、アプリケーションをバージョン2.2でコンパイルするように設定する方法があるのだろうかと思っていました。我々を8に任意の提案をビルドターゲットを設定する際にAndroidライブラリのターゲットコンパイルとそれ以降のAndroidバージョンのオブジェクト

private static String getHardwareSerial() { 
    try { 
     return Build.SERIAL; 
    } catch (VerifyError e) { 
     //Android 8 and previous did not have this information 
     return Build.UNKNOWN; 
    } 
} 

しかし、このコードの存在で、私たちのライブラリを使用して、私のサンプルアプリケーションを構築するために失敗したかの操作を行います。

周りに検索した後、私のようなコードを使用している人々が見つかりましたこの情報を得るには、目標を9に設定しているクライアントと一緒に生活しなければなりませんか?

答えて

1

あなたが反射によってそれを行うことができます:

public static String getHardwareSerial() { 
    try { 
     Field serialField = Build.class.getDeclaredField("SERIAL"); 
     return (String)serialField.get(null); 
    } 
    catch (NoSuchFieldException nsf) { 
    } 
    catch (IllegalAccessException ia) { 
    } 
    return Build.UNKNOWN; 
} 

フィールドは(OSの以前のバージョンに)見つからない場合、それは無視して、ビルドを返すようにフォールスルーされる例外をスローします。未知の。

関連する問題