Программно получить уровень Android API устройства?

104

Как я могу узнать, какой уровень API использует мое устройство?

Версия прошивки 1.6. Означает ли это, что он использует API уровня 4?

user283494
источник

Ответы:

105

Вы можете получить уровень API программно с помощью системной константы ( Build.VERSION.SDK_INT). Например, вы можете запустить некоторый фрагмент кода, для которого требуется более новый API, следующим образом (он будет выполняться, если текущий уровень API устройства равен как минимум 4)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.DONUT) {

}

Чтобы получить доступную пользователю версию Android, используйте:

Build.VERSION.RELEASE
Аркадиуш Цеслиньский
источник
38

Что вам понадобится: 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
Waza_Be
источник
7
Я думаю, что этот список может потребовать обновления
jcw
Обновил список
Vivek
10

Для уровня 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)";
        case 30: return  "Android 11"          + "";
        default: return  "";
    }
}

использование

String android_os = getAndroidVersion(android.os.Build.VERSION.SDK_INT);
Сайка
источник
Это бессмысленно, сначала вы указываете лимит сборки, но указываете случай для предыдущего api ... Build.VERSION.RELEASE предоставит вам числовую версию, Build.Version.SDK_INT даст вам лучший аналитический номер. Для названия, я думаю, вы можете использовать это решение для отражения: stackoverflow.com/a/13258693/4391450
AxelH
@AxelH Спасибо, что поделились ссылкой. Мой подход также используется некоторыми людьми в тех же и некоторых других сообщениях из-за простоты.
Sayka
Да, я понимаю идею и "симпатичную" часть, но мне не нравится каждый год обновлять метод из-за нового API.
AxelH
4

Чтобы получить текущий API вашего устройства:

int MyDeviceAPI = Build.VERSION.SDK_INT;
ralphgabb
источник
4

Очень просто:

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

Вывод:

E/MyActivity: manufacturer samsung 
                model SM-T310 
                version 19 
                versionRelease 4.4.2
CommonSenseCode
источник
3

в первых версиях использовалось Build.VERSION.SDK

 String myAPI= Build.VERSION.SDK;

но теперь устарело !.

SDK Это поле объявлено устаревшим на уровне API 4. Используйте SDK_INT, чтобы легко получить его как целое число.

теперь вам нужно использовать: SDK_INT Добавлено в API уровня 4:

  int myAPI = Build.VERSION.SDK_INT;

SDK_INT - видимая пользователю версия SDK фреймворка; его возможные значения определены в Build.VERSION_CODES.

больше информации:

http://developer.android.com/reference/android/os/Build.VERSION.html

Jorgesys
источник
3

Вы можете получить информацию об устройстве следующим образом.

Log.d(TAG, "RELEASE : " + Build.VERSION.RELEASE);
Log.d(TAG, "SDK     : " + Build.VERSION.SDK_INT);

и может получить историю кодов версий Android из ОС.

for (Field field : Build.VERSION_CODES.class.getDeclaredFields()) {
  field.setAccessible(true);
  Log.d(TAG, field.get(this) + " -> " + field.getName());
}

Это вывод.

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

Итак, объедините эти и официальную версию списка .

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

Это говорит о том, что код версии API25 - N_MR1.

Chanzmao
источник