web-dev-qa-db-fra.com

Comment puis-je vérifier la version du système d'Android?

Est-ce que quelqu'un sait comment vérifier la version du système (par exemple, 1.0, 2.2, etc.) par programmation?

445
davs

Vérifiez Android.os.Build.VERSION .

  • CODENAME: Le nom de code du développement actuel ou la chaîne "REL" s'il s'agit d'une version validée.
  • INCREMENTAL: valeur interne utilisée par le contrôle source sous-jacent pour représenter cette version.
  • RELEASE: chaîne de version visible par l'utilisateur.
396
Robby Pond

Exemple d'utilisation:

if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.Gingerbread) {
     // only for Gingerbread and newer versions
}
756
ATom

Build.Version est l'endroit où aller pour ces données. Voici un extrait de code expliquant comment le formater.

public String getAndroidVersion() {
    String release = Build.VERSION.RELEASE;
    int sdkVersion = Build.VERSION.SDK_INT;
    return "Android SDK: " + sdkVersion + " (" + release +")";
}

Ressemble à ceci "Android SDK: 19 (4.4.4)"

78
jpotts18
Build.VERSION.RELEASE;

Cela vous donnera les chiffres réels de votre version; aka 2.3.3 ou 2.2. Le problème lié à l'utilisation de Build.VERSION.SDK_INT est que si vous avez un téléphone enraciné ou une rom personnalisée, vous pourriez ne pas avoir de système d'exploitation standard (c'est-à-dire que mon Android exécute la version 2.3.5) et qu'il renverra une valeur nulle lors de l'utilisation de Build.VERSION.SDK_INT. alors Build.VERSION.RELEASE fonctionnera dans tous les cas!

59
Falcon165o

Pour vérifier la version du périphérique supérieure ou égale à Marshmallow, utilisez ce code.

if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.M){

    }

pour vérifier que les autres ne font que changer les VERSION_CODES comme,
K pour KitKat,
L pour Loolipop N pour Nougat et ainsi de suite ...

46
paulcab

Vous pouvez trouver la version Android en regardant Build.VERSION .

La documentation vous recommande de comparer Build.VERSION.SDK_INT aux valeurs de Build.VERSION_CODES .

C’est parfait tant que vous réalisez que 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 voulez que votre application s'exécute sur Android 1.5 ou une version antérieure, vous devrez utiliser à la place obsolète Build.VERSION.SDK .

43
Dave Webb

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 identique à la version du système mais fait en réalité référence au niveau de l'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_SANDWICH est égale à 14. 14 est le niveau API de Sandwich à la crème glacée, tandis que la version du système est 4.0. Ainsi, si vous écrivez en 4.0, votre code sera exécuté sur tous les périphériques à partir de Donut, car 4 correspond au niveau API de Donut (Build.VERSION_CODES.DONUT est é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 des raisons pour lesquelles utiliser "nombre magique" est une mauvaise habitude.

28
Michał Kisiel

Par exemple, une fonctionnalité ne fonctionne que pour api21, nous corrigeons les bugs dans api21 down

    if(Build.VERSION.SDK_INT >= 21) {
    //only api 21 above
    }else{
   //only api 21 down
    }
16
HOSHYAR Ahmadpour

Sachez que Build.VERSION.SDK_INT n'est pas fiable, il est mentionné par @ Falcon165o et récemment, je l'ai aussi rencontré.

Donc, pour obtenir les données de chaîne (basées sur liste des versions Android ) d'Android actuellement installé, j'ai créé un code comme celui-ci:

Java

//Current Android version data
public static String currentVersion(){
    double release=Double.parseDouble(Build.VERSION.RELEASE.replaceAll("(\\d+[.]\\d+)(.*)","$1"));
    String codeName="Unsupported";//below Jelly bean OR above Oreo
    if(release>=4.1 && release<4.4)codeName="Jelly bean";
    else if(release<5)codeName="Kit Kat";
    else if(release<6)codeName="Lollipop";
    else if(release<7)codeName="Marshmallow";
    else if(release<8)codeName="Nougat";
    else if(release<9)codeName="Oreo";
    return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT;
}

Kotlin

fun currentVersion(): String {
    val release = Java.lang.Double.parseDouble(Java.lang.String(Build.VERSION.RELEASE).replaceAll("(\\d+[.]\\d+)(.*)", "$1"))
    var codeName = "Unsupported"//below Jelly bean OR above Oreo
    if (release >= 4.1 && release < 4.4)  codeName = "Jelly bean"
    else if (release < 5) codeName = "Kit Kat"
    else if (release < 6) codeName = "Lollipop"
    else if (release < 7) codeName = "Marshmallow"
    else if (release < 8) codeName = "Nougat"
    else if (release < 9) codeName = "Oreo"
    return codeName + " v" + release + ", API Level: " + Build.VERSION.SDK_INT
}

Exemple de sortie qu'il produit:

Marshmallow v6.0, niveau API: 23

14
Nikita Kurtin
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you  like.
}
7
Kunkun Liu

utiliser cette classe

import Android.os.Build;

/**
 * Created by MOMANI on 2016/04/14.
 */
public class AndroidVersionUtil {
    public static int getApiVersion() {
        return Android.os.Build.VERSION.SDK_INT;
    }

    public static boolean isApiVersionGraterOrEqual(int thisVersion) {
        return Android.os.Build.VERSION.SDK_INT >= thisVersion;
    }
}
3
Basheer AL-MOMANI

Utilisez cette méthode:

 public static String getAndroidVersion() {
        String versionName = "";

        try {
             versionName = String.valueOf(Build.VERSION.RELEASE);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return versionName;
    }
1
Manoj Tarkar