Android Versions

NameAndroid versionRelease dateAPI-levelBuild.VERSION_CODES
Angel Cake (Alpha)1.023 September 20081BASE
Battenberg (Beta)1.19 February 20092BASE_1_1
Cupcake1.530 April 20093CUPCAKE
Donut1.615 September 20094DONUT
Eclair2.026 October 20095ECLAIR
2.0.13 December 20096ECLAIR_0_1
2.112 January 20107ECLAIR_MR1
Froyo2.220 May 20108FROYO
Gingerbread2.36 December 20109GINGERBREAD
2.3.39 February 201110GINGERBREAD_MR1
Honeycomb3.022 February 201111HONEYCOMB
3.110 May 201112HONEYCOMB_MR2
3.215 July 201113HONEYCOMB_MR1
Ice Cream Sandwich4.019 October 201114ICE_CREAM_SANDWICH
4.0.316 December 201115ICE_CREAM_SANDWICH_MR1
Jelly Bean4.19 July 201216JELLY_BEAN
4.213 November 201217JELLY_BEAN_MR1
4.324 July 201318JELLY_BEAN_MR2
KitKat4.431 October 201319KITKAT
25 July 201420KITKAT_WATCH
Lollipop5.017 October 201421LOLLIPOP
5.19 March 201522LOLLIPOP_MR1
Marshmallow6.05 October 201523M
Nougat7.022 August 201624N
7.1.15 December 201625N_MR1

Checking the Android Version on device at runtime

Build.VERSION_CODES is an enumeration of the currently known SDK version codes.

In order to conditionally run code based on the device's Android version, use the TargetApi annotation to avoid Lint errors, and check the build version before running the code specific to the API level.

Here is an example of how to use a class that was introduced in API-23, in a project that supports API levels lower than 23:

@Override
@TargetApi(23)
public void onResume() {
    super.onResume();
    if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
        //run Marshmallow code
        FingerprintManager fingerprintManager = this.getSystemService(FingerprintManager.class);
        //......................
    }
}