La partie difficile à ce sujet est que SDK_INT a été défini dans l'API niveau 4 et son utilisation échoue sur 1-3. Est-ce que quelqu'un sait comment bien gérer cela?
Zordid
Le SDK est disponible depuis l'API 1, INCREMENTAL est également disponible pour toutes les versions.
nuala
1
Build.VERSION.RELEASE est une chaîne, vous pouvez donc utiliser cette chaîne comme vous le souhaitez.
paiego
8
Ne vous inquiétez pas, même les hommes des cavernes n'utilisent pas aujourd'hui les API Android 1-3. @Zordid
Josh
811
Exemple d'utilisation:
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD){// only for gingerbread and newer versions}
J'ignore totalement toute version plus ancienne qu'Eclair (7), Android 2.1 et très bientôt nous arrêtons également le support pour le 2.1. Mais vous pouvez utiliser le SDK au lieu de SDK_INT.
ATom
12
Le SDK a été déprécié au niveau de l'API 4. Utilisez plutôt SDK_INT.
erdomester
J'ai une question: s'il fonctionne sur un système plus ancien que GINGERBREAD, alors nous ne pouvons pas obtenir android.os.Build.VERSION_CODES.GINGERBREAD, l'application se bloquera-t-elle?
HongchaoZhang
Non, car GINGERBREAD sera remplacé par le seul numéro lors de la génération java. Il est seulement nécessaire d'utiliser une version de compilation plus grande d'Android.
ATom
97
Build.Version est l'endroit où aller pour ces données. Voici un extrait de code pour savoir comment le formater.
Cela vous donnera les numéros réels de votre version; alias 2.3.3 ou 2.2. Le problème avec l'utilisation de Build.VERSION.SDK_INT est que si vous avez un téléphone enraciné ou une rom personnalisée, vous pouvez avoir un système d'exploitation non standard (alias mon Android exécute 2.3.5) et qui renverra un null lors de l'utilisation de Build.VERSION.SDK_INT donc Build.VERSION.RELEASE fonctionnera quoi qu'il arrive!
Du SDK: "La chaîne de version visible par l'utilisateur. Par exemple," 1.0 "ou" 3.4b5 "." .... "3.4b5" comment puis-je déterminer de quel numéro de version s'agit-il?
davs
La réponse complète 2.3.3 est le numéro de version, ou 2.2, ou 2.3.5 (rom personnalisé dans mon cas). C'est le numéro de version du système d'exploitation dans son ensemble.
Falcon165o
Cela renvoie la même chose Menu >> Paramètres >> À propos du téléphone. Il doit être étiqueté Version du micrologiciel ou quelque chose à cet effet.
Falcon165o
58
Comment diable un int pouvait-il retourner un nul? SDK_INT est un int primitif.
Zsolt Safrany
57
Pour vérifier la version de l'appareil qui est supérieure ou égale à Marshmallow, utilisez ce code.
C'est bien tant que vous vous rendez compte que cela Build.VERSION.SDK_INTn'a été introduit que dans l'API niveau 4, c'est-à-dire Android 1.6 (Donut). Donc, cela ne vous affectera pas, mais si vous vouliez que votre application s'exécute sur Android 1.5 ou une version antérieure, vous devriez utiliser la version obsolète à la Build.VERSION.SDKplace.
Je ne peux pas commenter les réponses, mais il y a une énorme erreur dans la réponse de Kaushik: SDK_INT n'est pas la même que la version système mais fait en fait référence au niveau API.
if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.ICE_CREAM_SANDWICH){//this code will be executed on devices running ICS or later}
La valeur Build.VERSION_CODES.ICE_CREAM_SANDWICHest égale à 14. 14 est le niveau API de Ice Cream Sandwich, tandis que la version système est 4.0. Donc, si vous écrivez 4.0, votre code sera exécuté sur tous les appareils à partir de Donut, car 4 est le niveau API de Donut ( Build.VERSION_CODES.DONUTégal à 4).
if(Build.VERSION.SDK_INT >=4.0){//this code will be executed on devices running on DONUT (NOT ICS) or later}
Cet exemple est une raison pour laquelle l'utilisation du «nombre magique» est une mauvaise habitude.
En fait, Build.VERSION.SDK_INT est le niveau API, pas le code de version. Donc, la ligne appropriée seraitif(Build.VERSION.SDK_INT >= 15){
erdomester
Que se passe-t-il si je vous dis que le code de version est le même que le niveau API et que le SDK_INT de ICE_CREAM_SANDWICH est 14 et non 15? @erdomester
Beyondo
19
Par exemple, une fonctionnalité ne fonctionne que pour api21 up, ce qui suit, nous corrigeons les bugs dans api21 down
if(Build.VERSION.SDK_INT >=21){//only api 21 above}else{//only api 21 down}
Étant donné que vous avez bashsur votre appareil Android, vous pouvez utiliser cette fonction bash:
function androidCodeName {
androidRelease=$(getprop ro.build.version.release)
androidCodeName=$(getprop ro.build.version.codename)# Time "androidRelease" x10 to test it as an integercase $androidRelease in[0-9].[0-9]|[0-9].[0-9].|[0-9].[0-9].[0-9]) androidRelease=$(echo $androidRelease | cut -d.-f1-2| tr -d .);;[0-9].) androidRelease=$(echo $androidRelease | sed 's/\./0/');;[0-9]) androidRelease+="0";;esac[-n "$androidRelease"]&&[ $androidCodeName = REL ]&&{# Do not use "androidCodeName" when it equals to "REL" but infer it from "androidRelease"
androidCodeName=""case $androidRelease in10) androidCodeName+=NoCodename;;11) androidCodeName+="Petit Four";;15) androidCodeName+=Cupcake;;20|21) androidCodeName+=Eclair;;22) androidCodeName+=FroYo;;23) androidCodeName+=Gingerbread;;30|31|32) androidCodeName+=Honeycomb;;40) androidCodeName+="Ice Cream Sandwich";;41|42|43) androidCodeName+="Jelly Bean";;44) androidCodeName+=KitKat;;50|51) androidCodeName+=Lollipop;;60) androidCodeName+=Marshmallow;;70|71) androidCodeName+=Nougat;;80|81) androidCodeName+=Oreo;;90) androidCodeName+=Pie;;100) androidCodeName+=ToBeReleased;;*) androidCodeName=unknown;;esac}
echo $androidCodeName
}
Réponses:
Vérifiez
android.os.Build.VERSION
.la source
Exemple d'utilisation:
la source
Build.Version est l'endroit où aller pour ces données. Voici un extrait de code pour savoir comment le formater.
Il ressemble à ceci "SDK Android: 19 (4.4.4)"
la source
Cela vous donnera les numéros réels de votre version; alias 2.3.3 ou 2.2. Le problème avec l'utilisation de Build.VERSION.SDK_INT est que si vous avez un téléphone enraciné ou une rom personnalisée, vous pouvez avoir un système d'exploitation non standard (alias mon Android exécute 2.3.5) et qui renverra un null lors de l'utilisation de Build.VERSION.SDK_INT donc Build.VERSION.RELEASE fonctionnera quoi qu'il arrive!
la source
Pour vérifier la version de l'appareil qui est supérieure ou égale à Marshmallow, utilisez ce code.
pour vérifier les autres, il suffit de changer les VERSION_CODES comme,
K pour kitkat,
L pour loolipop N pour Nougat et ainsi de suite ...
la source
Vous pouvez trouver la version Android en regardant
Build.VERSION
.La documentation vous recommande de vérifier
Build.VERSION.SDK_INT
les valeurs dansBuild.VERSION_CODES
.C'est bien tant que vous vous rendez compte que cela
Build.VERSION.SDK_INT
n'a été introduit que dans l'API niveau 4, c'est-à-dire Android 1.6 (Donut). Donc, cela ne vous affectera pas, mais si vous vouliez que votre application s'exécute sur Android 1.5 ou une version antérieure, vous devriez utiliser la version obsolète à laBuild.VERSION.SDK
place.la source
Je ne peux pas commenter les réponses, mais il y a une énorme erreur dans la réponse de Kaushik: SDK_INT n'est pas la même que la version système mais fait en fait référence au niveau API.
La valeur
Build.VERSION_CODES.ICE_CREAM_SANDWICH
est égale à 14. 14 est le niveau API de Ice Cream Sandwich, tandis que la version système est 4.0. Donc, si vous écrivez 4.0, votre code sera exécuté sur tous les appareils à partir de Donut, car 4 est le niveau API de Donut (Build.VERSION_CODES.DONUT
égal à 4).Cet exemple est une raison pour laquelle l'utilisation du «nombre magique» est une mauvaise habitude.
la source
if(Build.VERSION.SDK_INT >= 15){
Par exemple, une fonctionnalité ne fonctionne que pour api21 up, ce qui suit, nous corrigeons les bugs dans api21 down
la source
Sachez que Build.VERSION.SDK_INT n'est pas fiable, il est mentionné par @ Falcon165o et récemment j'ai rencontré celui-là aussi.
Donc, pour obtenir les données String (basées sur la liste des versions Android ) d'Android actuellement installé, j'ai créé un code comme celui-ci:
Java
Kotlin
Exemple de sortie qu'il produit:
la source
la source
utiliser cette classe
la source
Utilisez cette méthode:
la source
Étant donné que vous avez
bash
sur votre appareil Android, vous pouvez utiliser cette fonction bash:la source