確認 - android 端末情報 取得




プログラムによるAndroid APIのバージョンの取得 (6)

非常に簡単:

   String manufacturer = Build.MANUFACTURER;
   String model = Build.MODEL;
   int version = Build.VERSION.SDK_INT;
   String versionRelease = Build.VERSION.RELEASE;

Log.e("MyActivity", "manufacturer " + manufacturer
            + " \n model " + model
            + " \n version " + version
            + " \n versionRelease " + versionRelease
    );

出力:

E/MyActivity:   manufacturer ManufacturerX
                model SM-T310 
                version 19 
                versionRelease 4.4.2

電話機が現在実行しているAPIバージョンを取得する方法はありますか?


Androidのドキュメントに記載されているように、携帯電話が実行されているSDKレベル(整数)は次の場所で利用できます:

android.os.Build.VERSION.SDK_INT

このintに対応するクラスは、 android.os.Build.VERSION_CODESクラスにあります。

コード例:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
    // Do something for lollipop and above versions
} else{
    // do something for phones running an SDK before lollipop
}

編集 :このSDK_INTはDonut(android 1.6 / API4)で使用できるので、アプリケーションを使用するときにCupcake(android 1.5 / API3)と互換性がないことを確認してください(アプリケーションBruceのおかげで精度が落ちます) 。

対応するアンドロイドのドキュメントはandroid.os.Build.VERSION.SDK_INTandroid.os.Build.VERSION_CODESありandroid.os.Build.VERSION_CODES


これを試して:

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
     // only for gingerbread and newer versions
 }

すべてのことを考慮に入れて、ここに私はデバイスがFroyoまたは新しいAndroid OS(2.2 +)を持っているかどうかを検出するために使用するコードです:

public static boolean froyoOrNewer() {
    // SDK_INT is introduced in 1.6 (API Level 4) so code referencing that would fail
    // Also we can't use SDK_INT since some modified ROMs play around with this value, RELEASE is most versatile variable
    if (android.os.Build.VERSION.RELEASE.startsWith("1.") ||
        android.os.Build.VERSION.RELEASE.startsWith("2.0") ||
        android.os.Build.VERSION.RELEASE.startsWith("2.1"))
        return false;

    return true;
}

明らかに、ジェネリックチェッカーが必要な場合に備えて、Androidの1.0&1.5バージョンを考慮に入れてif条件を変更することができます。 おそらくこのようなものになるでしょう:

// returns true if current Android OS on device is >= verCode 
public static boolean androidMinimum(int verCode) {
    if (android.os.Build.VERSION.RELEASE.startsWith("1.0"))
        return verCode == 1;
    else if (android.os.Build.VERSION.RELEASE.startsWith("1.1")) {
        return verCode <= 2;
    } else if (android.os.Build.VERSION.RELEASE.startsWith("1.5")) {
        return verCode <= 3;
    } else {
        return android.os.Build.VERSION.SDK_INT >= verCode;
    }
}

コードがあなたのために働いていないかどうか教えてください。


私はこれを書いたよりももっと簡単にハンドリングされる数字としてバージョンを持っているのが好きです:

  public static float getAPIVerison() {

    Float f = null;
    try {
        StringBuilder strBuild = new StringBuilder();
        strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2));
        f = new Float(strBuild.toString());
    } catch (NumberFormatException e) {
        Log.e("", "error retriving api version" + e.getMessage());
    }

    return f.floatValue();
}

私は使用したコードを改善した

public static float getAPIVerison() {

    float f=1f;
    try {
        StringBuilder strBuild = new StringBuilder();
        strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2));
        f= Float.valueOf(strBuild.toString());
    } catch (NumberFormatException e) {
        Log.e("myApp", "error retriving api version" + e.getMessage());
    }

    return f;
}






android-api-levels