获取手机的Android的API级别当前运行我的应用程序

问题描述:

可能重复:
Programmatically obtain the Android API level of a device?获取手机的Android的API级别当前运行我的应用程序

如何获得curently运行我的应用程序在手机的API级别?我相信它很简单,但我找不到它,因为我所有的搜索都会造成大量的垃圾。

检查android.os.Build.VERSION,这是一个静态类,包含系统正在运行的各种Android OS信息。

如果你关心的所有版本的可能(回原来的Android版本),在minSdkVersion设置为任何小于4,那么你将不得不使用android.os.Build.VERSION.SDK,这是一个String可以转换为整数发布。

如果您至少使用API​​版本4(Android 1.6 Donut),则获取API级别的当前建议方法是检查android.os.Build.VERSION.SDK_INT的值,该值为整数。

在这两种情况下,你在android.os.Build.VERSION_CODES定义的所有那些得到映射到一个枚举值的整数:

SDK_INT value  Build.VERSION_CODES  Human Version Name  
    1     BASE      Android 1.0 (no codename) 
    2     BASE_1_1     Android 1.1 Petit Four 
    3     CUPCAKE     Android 1.5 Cupcake 
    4     DONUT      Android 1.6 Donut 
    5     ECLAIR     Android 2.0 Eclair 
    6     ECLAIR_0_1    Android 2.0.1 Eclair     
    7     ECLAIR_MR1    Android 2.1 Eclair 
    8     FROYO      Android 2.2 Froyo 
    9     GINGERBREAD    Android 2.3 Gingerbread 
    10     GINGERBREAD_MR1   Android 2.3.3 Gingerbread 
    11     HONEYCOMB     Android 3.0 Honeycomb 
    12     HONEYCOMB_MR1    Android 3.1 Honeycomb 
    13     HONEYCOMB_MR2    Android 3.2 Honeycomb 
    14     ICE_CREAM_SANDWICH  Android 4.0 Ice Cream Sandwich 
    15     ICE_CREAM_SANDWICH_MR1 Android 4.0.3 Ice Cream Sandwich 
    16     JELLY_BEAN    Android 4.1 Jellybean 
    17     JELLY_BEAN_MR1   Android 4.2 Jellybean 
    18     JELLY_BEAN_MR2   Android 4.3 Jellybean 
    19     KITKAT     Android 4.4 KitKat 
    20     KITKAT_WATCH    Android 4.4 KitKat Watch 
    21     LOLLIPOP     Android 5.0 Lollipop 
    22     LOLLIPOP_MR1    Android 5.1 Lollipop 
    23     M       Android 6.0 Marshmallow 
    24     N       Android 7.0 Nougat 
    25     N_MR1      Android 7.1.1 Nougat 
    26     O       Android 8.0 Oreo 
    27     O_MR1      Android 8 Oreo MR1 
    10000    CUR_DEVELOPMENT   Current Development Version 

请注意,Android N和O之间的一段时间中,Android SDK就开始走样CUR_DEVELOPMENT和开发商下一个主要的Android版本的预览是相同的SDK_INT值(10000)。

+0

谢谢你只是看不到它;) – Prospero 2010-10-22 18:00:37

+0

'android.os.Build.VERSION.SDK'已弃用在棒棒糖,这意味着“你仍然可以使用这个,但不要指望它,因为我们可能会取代它与未来的软件版本中的其他内容(或完全删除)“。 – 2015-04-16 14:07:40

+3

@ Duraiamuthan.H - 我已经提到,如果您使用API​​版本4或更新,您应该切换到使用'android.os.Build.VERSION.SDK_INT'。 – birryree 2015-04-16 15:23:50

android.os.Build.VERSION.SDK_INT

在这里你可以找到可能的值:VERSION_CODES

+2

这个解决方案不太好,因为这个常数是自API级别4以来。 – 2011-10-05 00:32:11

试试这个:Float.valueOf(android.os.Build.VERSION.RELEASE)< = 2.1

+2

该值未被定义为浮点数,例如“2.1-update1” – 2012-10-13 12:39:34

Integer.valueOf(android.os.Build.VERSION.SDK); 

值是:

Platform Version API Level 
Android 6.0  23 
Android 5.1  22 
Android 5.0  21 
Android 4.4W  20 
Android 4.4  19 
Android 4.3       18 
Android 4.2  17 
Android 4.1       16 
Android 4.0.3     15 
Android 4.0       14 
Android 3.2       13 
Android 3.1       12 
Android 3.0       11 
Android 2.3.3     10 
Android 2.3       9 
Android 2.2       8 
Android 2.1       7 
Android 2.0.1     6 
Android 2.0       5 
Android 1.6       4 
Android 1.5       3 
Android 1.1       2 
Android 1.0       1 

注意:不使用android.os.Build.VERSION.SDK_INT如果<uses-sdk android:minSdkVersion="3" />

在Android 1.5及更低版本的所有设备上,您将得到例外,因为Build.VERSION.SDK_INT自SDK 4(甜甜圈1.6)以来。

+0

还有另一个技巧,您可以使用它并使用反射来查看如果SDK_INT存在。如果不是,那么版本 2011-10-27 07:57:25

+0

完美地工作。同时还有一些“新”:http://developer.android.com/reference/android/os/Build.VERSION_CODES.html – 2012-10-02 13:18:04

+0

我已将它们添加到列表中。 – 2012-10-13 12:37:59