Retrieving Android API version programmatically

前端 未结 11 1879
长情又很酷
长情又很酷 2020-11-22 04:54

Is there any way to get the API version that the phone is currently running?

相关标签:
11条回答
  • 2020-11-22 05:23

    I improved code i used

    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;
    }
    
    0 讨论(0)
  • 2020-11-22 05:25

    As described in the Android documentation, the SDK level (integer) the phone is running is available in:

    android.os.Build.VERSION.SDK_INT

    The class corresponding to this int is in the android.os.Build.VERSION_CODES class.

    Code example:

    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
    }
    

    Edit: This SDK_INT is available since Donut (android 1.6 / API4) so make sure your application is not retro-compatible with Cupcake (android 1.5 / API3) when you use it or your application will crash (thanks to Programmer Bruce for the precision).

    Corresponding android documentation is here and here

    0 讨论(0)
  • 2020-11-22 05:26

    i prefer have the version as number to be handeled more easyway than i wrote this:

      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();
    }
    
    0 讨论(0)
  • 2020-11-22 05:27

    Taking into account all said, here is the code I use for detecting if device has Froyo or newer 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;
    }
    

    Obviously, you can modify that if condition to take into account 1.0 & 1.5 versions of Android in case you need generic checker. You will probably end up with something like this:

    // 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;
        }
    }
    

    Let me know if code is not working for you.

    0 讨论(0)
  • 2020-11-22 05:27

    SDK.INT is supported for Android 1.6 and up

    SDK is supported for all versions

    So I do:

    String sdk_version_number = android.os.Build.VERSION.SDK;
    

    Credits to: CommonsWare over this answer

    0 讨论(0)
  • 2020-11-22 05:28

    Very easy:

       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
        );
    

    Output:

    E/MyActivity:   manufacturer ManufacturerX
                    model SM-T310 
                    version 19 
                    versionRelease 4.4.2
    
    0 讨论(0)
提交回复
热议问题