219 votes

Obtenir le niveau d'API Android du téléphone qui exécute actuellement mon application

Duplicata possible :
Obtenir de manière programmée le niveau d'API Android d'un appareil ?

Comment puis-je obtenir le niveau d'Api du téléphone qui exécute actuellement mon application ? Je suis sûr que c'est simple mais je n'arrive pas à le trouver car toutes mes recherches aboutissent à des tonnes de déchets.

4 votes

Si (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {...}

426voto

birryree Points 29165

Vérifiez android.os.Build.VERSION qui est une classe statique contenant diverses informations sur le système d'exploitation Android exécuté par un système.

Si vous vous intéressez à toutes les versions possibles (jusqu'à la version originale d'Android), comme dans le cas suivant minSdkVersion a une valeur inférieure à 4, vous devrez utiliser la fonction android.os.Build.VERSION.SDK qui est un String qui peut être converti en entier de la version.

Si vous êtes au moins sur la version 4 de l'API (Android 1.6 Donut), la méthode actuellement suggérée pour obtenir le niveau de l'API serait de vérifier la valeur de android.os.Build.VERSION.SDK_INT qui est un nombre entier.

Dans les deux cas, l'entier obtenu correspond à une valeur d'énumération parmi toutes celles définies dans 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
   28                  P                         Android 9 Pie
   29                  Q                         Android 10
  10000                CUR_DEVELOPMENT           Current Development Version

Notez que quelque temps entre Android N et O, le SDK Android a commencé à aliaser CUR_DEVELOPMENT et l'aperçu pour développeurs de la prochaine version majeure d'Android pour être le même SDK_INT valeur ( 10000 ).

0 votes

Merci, je ne pouvais pas le voir ;)

0 votes

android.os.Build.VERSION.SDK est déprécié dans lollipop, ce qui signifie "Vous pouvez toujours l'utiliser, mais ne comptez pas dessus, car nous le remplacerons probablement par autre chose (ou le supprimerons entièrement) dans les prochaines versions du logiciel".

3 votes

@Duraiamuthan.H - J'ai déjà mentionné que si vous utilisez la version 4 de l'API ou une version plus récente, vous devez passer à l'utilisation de l'API suivante android.os.Build.VERSION.SDK_INT .

140voto

rude Points 1376
Integer.valueOf(android.os.Build.VERSION.SDK);

Les valeurs sont :

Platform Version   API Level
Android 9.0        28
Android 8.1        27
Android 8.0        26
Android 7.1        25
Android 7.0        24
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

ATTENTION : n'utilisez pas android.os.Build.VERSION.SDK_INT si <uses-sdk android:minSdkVersion="3" /> .

Vous obtiendrez l'exception sur tous les appareils avec Android 1.5 et moins parce que Build.VERSION.SDK_INT est depuis SDK 4 (Donut 1.6).

1 votes

Il y a une autre astuce, vous pouvez l'utiliser de toute façon et utiliser la réflexion pour voir si SDK_INT existe. Si ce n'est pas le cas, la version est <= 3 et, au moins pour mes besoins, c'était suffisant.

0 votes

Fonctionne parfaitement. En attendant, il y en a "quelques" nouvelles : developer.Android.com/reference/Android/os/

3 votes

android.os.Build.VERSION.SDK est déprécié dans lollipop, ce qui signifie "Vous pouvez toujours l'utiliser, mais ne comptez pas dessus, car nous le remplacerons probablement par autre chose (ou le supprimerons entièrement) dans les prochaines versions du logiciel".

46voto

Cristian Points 92147

android.os.Build.VERSION.SDK_INT

Vous trouverez ici les valeurs possibles : VERSION_CODES .

3 votes

Cette solution n'est pas très bonne car cette constante est depuis le niveau 4 de l'API.

0 votes

@Felipe Android ne maintient plus les données sur les appareils en dessous du niveau 15 de l'API parce que c'est un si petit pourcentage des appareils. À moins que vous ne cibliez explicitement des appareils très anciens, cette solution est parfaite.

-14voto

Tsung.W Points 19

Essayez ceci : Float.valueOf(Android.os.Build.VERSION.RELEASE) <= 2.1

2 votes

Cette valeur n'est pas définie comme étant un flottant, par exemple "2.1-update1".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X