15

I need to check in code what Android release version is running currently on target device. Can you supply code example?

5 Answers 5

25

I was looking for this and didn't find a solution - ended up here and I figured it out myself so for anyone out there looking for this:

int SDK_INT = android.os.Build.VERSION.SDK_INT;

this returns os sdk level 7 eclair 8 froyo etc

1
  • 1
    This is actually not really a correct answer to the question, as SDK_INT is available from API Level 4 (Donut, 1.6) on. So, it fails when trying to detect 1.5, which was part of the question...
    – Zordid
    Commented Mar 23, 2012 at 11:41
9

To get the build version of Android like: 2.2, 2.3.3, 4.0 or 4.0.3 ... use the following code:

String deviceVersion = Build.VERSION.RELEASE;
1

I think this is a duplicate of my own question: ndk version at run time. Short answer: no easy way for a native application to do it (you could however run a Java app and communicate with it to get the version).

1

can you execute getprop ro.build.version.release shell command on your device ?

0
-2

This works

also import the followng:

import com.android.phonetests.TEST_INTERFACE;
import android.os.Build;
import android.app.ActivityThread;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;


private int GetSDKVersion()
{
    int version = 0;
    IPackageManager pm = ActivityThread.getPackageManager();
    try
    {
        //returns a ref to my application according to its application name
        ApplicationInfo applicationInfo = pm.getApplicationInfo("com.android.phonetests", 0);

        if (applicationInfo != null) 
        {           
            version = applicationInfo.targetSdkVersion; ////this makes the same -> version = Build.VERSION.SDK_INT
            Log.i(LOG_TAG,"[DBG] version: " + version);  

            //2 is 5
            //2.01 6 (Donut - 2.01)
            //2.2  7 (Eclair - 2.2) currently it is Eclair_MR1 (Major Release)                  
            switch (version) 
            {                           
                case Build.VERSION_CODES.ECLAIR_MR1:
                Log.i(LOG_TAG,"[DBG] version: ECLAIR");//2.2  7 (Eclair - 2.2) currently it is Eclair_MR1 (Major Release)
                break;
                case Build.VERSION_CODES.DONUT:
                Log.i(LOG_TAG,"[DBG] version: DONUT");//2.01 6 (Donut - 2.01)
                break;
            }
        }
    } 
    catch (android.os.RemoteException e){}      
    return version;
}
4
  • Unfortunately, this wasn't working on my 2.1 Nexus One. "com.android.phonetests" seems to not exist. Commented Jun 30, 2010 at 20:15
  • 1
    Shouldn't you just be getting the value defined in Build.VERSION.SDK_INT instead of querying the targetSdkVersion from some random package? Commented Jun 30, 2010 at 20:20
  • 1
    thanks, don't know why I didn't use this from the beginning? I simply went a difficult way :-( Thanks Ilana
    – ilana
    Commented Jul 1, 2010 at 8:14
  • Steve Pomeroy, I have used package name of my apk file => com.android.phonetests. Now any body who will use my code example should off coarse change it with his/her package name !!
    – ilana
    Commented Jul 19, 2010 at 9:41

Not the answer you're looking for? Browse other questions tagged or ask your own question.