Existe-t-il un moyen d'obtenir la version d'API que le téléphone exécute actuellement?
android
android-api-levels
Parth Mehta
la source
la source
Réponses:
Comme décrit dans la documentation Android, le niveau SDK (entier) que le téléphone exécute est disponible dans:
android.os.Build.VERSION.SDK_INT
La classe correspondant à cet int est dans la
android.os.Build.VERSION_CODES
classe.Exemple de code:
Edit : ce SDK_INT est disponible depuis Donut (android 1.6 / API4) alors assurez-vous que votre application n'est pas rétro-compatible avec Cupcake (android 1.5 / API3) lorsque vous l'utilisez ou votre application plantera (merci au programmeur Bruce pour la précision) .
La documentation Android correspondante est ici et ici
la source
minSdkVersion
sur4
(Android 1.6) et continuez.Très facile:
Production:
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, peu importe que vous utilisiez la version Android standard ou non!
Pour l'utiliser, vous pouvez simplement le faire;
la source
int android.os.Build.VERSION.SDK_INT
etpublic static final int SDK_INT
etAdded in API level 4
comment int (et non Integer) pourrait-il revenirNULL
?NULL
est un état pour un objet, donc sa construction ou sa VERSION pourrait êtrenull
théoriquement, mais dans ce cas non seulement,SDK_INT
maisRELEASE
aussi provoquerait un NPE. SDK_INT pourrait probablement provoquer «aucune exception de méthode de ce type» ou quelque chose comme ça, mais pas null ou NPE. Si seulement la ROM personnalisée rompt les documents et la méthode déclarée commepublic static final Integer SDK_INT
. J'essaie simplement de déterminer la nature d'un problème pour contourner ce problème.null
n'a pas de sens.Compte tenu de tout cela, voici le code que j'utilise pour détecter si l'appareil a Froyo ou un système d'exploitation Android plus récent (2.2+):
De toute évidence, vous pouvez modifier cette condition pour prendre en compte les versions 1.0 et 1.5 d'Android au cas où vous auriez besoin d'un vérificateur générique. Vous vous retrouverez probablement avec quelque chose comme ceci:
Faites-moi savoir si le code ne fonctionne pas pour vous.
la source
essaye ça:
la source
android.os.Build.VERSION.SDK devrait vous donner la valeur du niveau API. Vous pouvez facilement trouver le mappage du niveau api à la version Android dans la documentation Android. Je pense que 8 correspond à 2.2, 7 à 2.1, etc.
la source
Je l'ai. Son utilisant la
getApplicationInfo()
méthode de laContext
classe.la source
SDK.INT est pris en charge pour Android 1.6 ou version ultérieure
Le SDK est pris en charge pour toutes les versions
Moi aussi:
Crédits à: CommonsWare sur cette réponse
la source
Je préfère que la version en tant que numéro soit plus facile à manipuler que ce que j'ai écrit:
la source
Son travail Happy Coding
Remarque Veuillez vous assurer que votre package d'importation est correct (importez le package du nom de votre package d'application sinon il ne fonctionnera pas correctement)
la source
J'ai amélioré le code que j'ai utilisé
la source