以编程方式获取设备的 Android API 级别?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2768806/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Programmatically obtain the Android API level of a device?
提问by user283494
How can I find out which API level my device is using?
如何找出我的设备使用的 API 级别?
The firmware version is 1.6. Does that mean it uses API Level 4?
固件版本为 1.6。这是否意味着它使用 API 级别 4?
回答by Arkadiusz Cie?liński
You can obtain API level programatically by the system constant (Build.VERSION.SDK_INT
). For example you can run some piece of code which requires newer API in the following way (it will execute if the current device's API level is at least 4)
您可以通过系统常量 ( Build.VERSION.SDK_INT
) 以编程方式获取 API 级别。例如,您可以通过以下方式运行一些需要更新 API 的代码(如果当前设备的 API 级别至少为 4,它将执行)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.DONUT) {
}
To obtain user visible Android Version use:
要获取用户可见的 Android 版本,请使用:
Build.VERSION.RELEASE
回答by Waza_Be
What you need: http://developer.android.com/reference/android/os/Build.VERSION_CODES.html
你需要什么:http: //developer.android.com/reference/android/os/Build.VERSION_CODES.html
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.1 Oreo MR1
28 P Android 9 Pie
29 Q Android 10 Q
10000 CUR_DEVELOPMENT Current Development Version
回答by Sayka
For API Level >= 4you can use Build.VERSION.SDK_INT
对于API 级别 >= 4,您可以使用Build.VERSION.SDK_INT
private String getAndroidVersion(int sdk) {
switch (sdk) {
case 1: return "(Android 1.0)";
case 2: return "Petit Four" + "(Android 1.1)";
case 3: return "Cupcake" + "(Android 1.5)";
case 4: return "Donut" + "(Android 1.6)";
case 5: return "Eclair" + "(Android 2.0)";
case 6: return "Eclair" + "(Android 2.0.1)";
case 7: return "Eclair" + "(Android 2.1)";
case 8: return "Froyo" + "(Android 2.2)";
case 9: return "Gingerbread" + "(Android 2.3)";
case 10: return "Gingerbread" + "(Android 2.3.3)";
case 11: return "Honeycomb" + "(Android 3.0)";
case 12: return "Honeycomb" + "(Android 3.1)";
case 13: return "Honeycomb" + "(Android 3.2)";
case 14: return "Ice Cream Sandwich" + "(Android 4.0)";
case 15: return "Ice Cream Sandwich" + "(Android 4.0.3)";
case 16: return "Jelly Bean" + "(Android 4.1)";
case 17: return "Jelly Bean" + "(Android 4.2)";
case 18: return "Jelly Bean" + "(Android 4.3)";
case 19: return "KitKat" + "(Android 4.4)";
case 20: return "KitKat Watch" + "(Android 4.4)";
case 21: return "Lollipop" + "(Android 5.0)";
case 22: return "Lollipop" + "(Android 5.1)";
case 23: return "Marshmallow" + "(Android 6.0)";
case 24: return "Nougat" + "(Android 7.0)";
case 25: return "Nougat" + "(Android 7.1.1)";
case 26: return "Oreo" + "(Android 8.0)";
case 27: return "Oreo" + "(Android 8.1)";
case 28: return "Pie" + "(Android 9.0)";
case 29: return "Q" + "(Android 10.0)";
default: return "";
}
}
Usage
用法
String android_os = getAndroidVersion(android.os.Build.VERSION.SDK_INT);
回答by CommonSenseCode
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 samsung
model SM-T310
version 19
versionRelease 4.4.2
回答by ralphgabb
To get your device current API :
要获取您的设备当前 API :
int MyDeviceAPI = Build.VERSION.SDK_INT;
回答by Jorgesys
in first versions was used Build.VERSION.SDK
在第一个版本中使用 Build.VERSION.SDK
String myAPI= Build.VERSION.SDK;
but now is deprecated!.
但现在已弃用!。
SDKThis field was deprecated in API level 4. Use SDK_INT to easily get this as an integer.
SDK此字段在 API 级别 4 中已弃用。使用 SDK_INT 可轻松将其作为整数获取。
now you have to use: SDK_INTAdded in API level 4 :
现在您必须使用:SDK_INT添加在 API 级别 4 中:
int myAPI = Build.VERSION.SDK_INT;
SDK_INTThe user-visible SDK version of the framework; its possible values are defined in Build.VERSION_CODES.
SDK_INT用户可见的框架 SDK 版本;它的可能值在 Build.VERSION_CODES 中定义。
more info:
更多信息:
http://developer.android.com/reference/android/os/Build.VERSION.html
http://developer.android.com/reference/android/os/Build.VERSION.html
回答by chanzmao
You can get device's information, as following.
您可以获取设备的信息,如下所示。
Log.d(TAG, "RELEASE : " + Build.VERSION.RELEASE);
Log.d(TAG, "SDK : " + Build.VERSION.SDK_INT);
and can get the Android version code history from OS.
并且可以从 OS 获取 Android 版本代码历史记录。
for (Field field : Build.VERSION_CODES.class.getDeclaredFields()) {
field.setAccessible(true);
Log.d(TAG, field.get(this) + " -> " + field.getName());
}
This is output.
这是输出。
RELEASE : 5.1.1
SDK : 22
1 -> BASE
2 -> BASE_1_1
3 -> CUPCAKE
10000 -> CUR_DEVELOPMENT
4 -> DONUT
5 -> ECLAIR
6 -> ECLAIR_0_1
7 -> ECLAIR_MR1
8 -> FROYO
9 -> GINGERBREAD
10 -> GINGERBREAD_MR1
11 -> HONEYCOMB
12 -> HONEYCOMB_MR1
13 -> HONEYCOMB_MR2
14 -> ICE_CREAM_SANDWICH
15 -> ICE_CREAM_SANDWICH_MR1
16 -> JELLY_BEAN
17 -> JELLY_BEAN_MR1
18 -> JELLY_BEAN_MR2
19 -> KITKAT
20 -> KITKAT_WATCH
21 -> L
21 -> LOLLIPOP
22 -> LOLLIPOP_MR1
so, combine these and official version list.
所以,结合这些和官方版本列表。
API VERSION_CODE VERSION CODE_NAME
1 BASE 1 (no code name)
2 BASE_1_1 1.1 (no code name)
3 CUPCAKE 1.5 Cupcake
4 DONUT 1.6 Donut
5 ECLAIR 2 Eclair
6 ECLAIR_0_1 2.0.1 Eclair
7 ECLAIR_MR1 2.1 Eclair
8 FROYO 2.2.x Froyo
9 GINGERBREAD 2.3 - 2.3.2 Gingerbread
10 GINGERBREAD_MR1 2.3.3 - 2.3.7 Gingerbread
11 HONEYCOMB 3 Honeycomb
12 HONEYCOMB_MR1 3.1 Honeycomb
13 HONEYCOMB_MR2 3.2.x Honeycomb
14 ICE_CREAM_SANDWICH 4.0.1 - 4.0.2 Ice Cream Sandwich
15 ICE_CREAM_SANDWICH_MR1 4.0.3 - 4.0.4 Ice Cream Sandwich
16 JELLY_BEAN 4.1.x Jelly Bean
17 JELLY_BEAN_MR1 4.2.x Jelly Bean
18 JELLY_BEAN_MR2 4.3.x Jelly Bean
19 KITKAT 4.4 - 4.4.4 KitKat
20 KITKAT_WATCH 4.4W KitKat Watch
21 LOLLIPOP 5 Lollipop
22 LOLLIPOP_MR1 5.1 Lollipop
23 M 6 Marshmallow
24 N 7 Nougat
25 N_MR1 7.1 Nougat
Thissays, a version_code of API25 is N_MR1.
这就是说,API25 的 version_code 是 N_MR1。