Question Récupération de la version d'API Android par programmation


Est-il possible d'obtenir la version de l'API que le téléphone est en cours d'exécution?


465
2017-08-06 12:32


origine


Réponses:


Comme décrit dans la documentation Android, le niveau de 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:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
    // Do something for lollipop and above versions
} else{
    // do something for phones running an SDK before lollipop
}

modifier: 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 que votre application plante (grâce à Programmer Bruce pour la précision).

La documentation Android correspondante est ici et ici


915
2017-10-15 09:01



Très facile:

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

Sortie:

E/MyActivity:   manufacturer ManufacturerX
                model SM-T310 
                version 19 
                versionRelease 4.4.2

91
2018-01-28 22:39



Build.VERSION.RELEASE;

Cela vous donnera les chiffres réels de votre version; aka 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 root ou personnalisé, vous pourriez avoir un système d'exploitation non standard (aka mon Android exécute 2.3.5) et cela retournera un null lors de l'utilisation de Build.VERSION.SDK_INT alors Build.VERSION.RELEASE fonctionnera quoi qu'il arrive!

Pour l'utiliser, vous pourriez juste faire ceci;

String androidOS = Build.VERSION.RELEASE;

72
2018-03-07 14:49



En tenant compte de tout ce qui a été dit, voici le code que j'utilise pour détecter si un appareil possède Froyo ou un système d'exploitation Android plus récent (2.2+):

public static boolean froyoOrNewer() {
    // SDK_INT is introduced in 1.6 (API Level 4) so code referencing that would fail
    // Also we can't use SDK_INT since some modified ROMs play around with this value, RELEASE is most versatile variable
    if (android.os.Build.VERSION.RELEASE.startsWith("1.") ||
        android.os.Build.VERSION.RELEASE.startsWith("2.0") ||
        android.os.Build.VERSION.RELEASE.startsWith("2.1"))
        return false;

    return true;
}

Évidemment, vous pouvez modifier cette condition si vous voulez 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 finirez probablement avec quelque chose comme ceci:

// returns true if current Android OS on device is >= verCode 
public static boolean androidMinimum(int verCode) {
    if (android.os.Build.VERSION.RELEASE.startsWith("1.0"))
        return verCode == 1;
    else if (android.os.Build.VERSION.RELEASE.startsWith("1.1")) {
        return verCode <= 2;
    } else if (android.os.Build.VERSION.RELEASE.startsWith("1.5")) {
        return verCode <= 3;
    } else {
        return android.os.Build.VERSION.SDK_INT >= verCode;
    }
}

Faites-moi savoir si le code ne fonctionne pas pour vous.


29
2017-07-27 08:01



essaye ça:

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
     // only for gingerbread and newer versions
 }

12
2018-03-20 22:35



android.os.Build.VERSION.SDK devrait vous donner la valeur du niveau de l'API. Vous pouvez facilement trouver la cartographie du niveau d'api à la version android dans la documentation android. Je crois, 8 est pour 2,2, 7 pour 2,1, et ainsi de suite.


8
2017-08-06 12:44



Je l'ai. Son utilisant le getApplicationInfo() méthode de Context classe.


4
2017-08-06 12:41