wake-up-neo.com

Wie kann ich die Systemversion von Android überprüfen?

Weiß jemand, wie ich die Systemversion (z. B. 1.0, 2.2 usw.) programmgesteuert überprüfen kann?

462
davs

Überprüfen Sie Android.os.Build.VERSION .

  • CODENAME: Der aktuelle Entwicklungs-Codename oder die Zeichenfolge "REL", wenn dies ein Release-Build ist.
  • INCREMENTAL: Der interne Wert, der von der zugrunde liegenden Quellcodeverwaltung zur Darstellung dieses Builds verwendet wird.
  • RELEASE: Die vom Benutzer sichtbare Versionszeichenfolge.
407
Robby Pond

Beispiel wie man es benutzt:

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

Build.Version ist der Ort für diese Daten. Hier ist ein Code-Snippet zum Formatieren.

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

Sieht so aus "Android SDK: 19 (4.4.4)"

82
jpotts18
Build.VERSION.RELEASE;

Dadurch erhalten Sie die tatsächlichen Nummern Ihrer Version. aka 2.3.3 oder 2.2. Das Problem bei der Verwendung von Build.VERSION.SDK_INT ist, dass Sie, wenn Sie ein verwurzeltes Telefon oder ein benutzerdefiniertes ROM haben, möglicherweise ein Nicht-Standard-Betriebssystem haben (auch bekannt als mein Android wird 2.3.5 ausgeführt) und dass eine Null zurückgegeben wird, wenn Verwenden Sie Build.VERSION.SDK_INT, damit Build.VERSION.RELEASE funktioniert, egal was passiert!

59
Falcon165o

Verwenden Sie diesen Code, um die Geräteversion zu überprüfen, die größer oder gleich Marshmallow ist.

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

    }

um andere zu überprüfen, ändere einfach den VERSION_CODES wie,
K für KitKat,
L für Loolipop N für Nougat und so weiter ...

47
paulcab

Sie finden die Android -Version unter Build.VERSION .

In der Dokumentation wird empfohlen, Build.VERSION.SDK_INT mit den Werten in Build.VERSION_CODES zu vergleichen.

Dies ist in Ordnung, solange Sie feststellen, dass _Build.VERSION.SDK_INT_ nur in API Level 4 eingeführt wurde, dh Android 1.6 (Donut). Dies hat also keine Auswirkungen auf Sie. Wenn Sie jedoch möchten, dass Ihre App auf Android 1.5 oder früher ausgeführt wird, müssen Sie stattdessen das veraltete Build.VERSION.SDK verwenden.

44
Dave Webb

Ich kann die Antworten nicht kommentieren, aber es gibt einen großen Fehler in Kaushiks Antwort: SDK_INT ist nicht dasselbe wie die Systemversion, sondern bezieht sich tatsächlich auf die API-Ebene.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
    //this code will be executed on devices running ICS or later
}

Der Wert Build.VERSION_CODES.ICE_CREAM_SANDWICH ist gleich 14. 14 ist die API-Ebene von Ice Cream Sandwich, während die Systemversion 4.0 ist. Wenn Sie also 4.0 schreiben, wird Ihr Code auf allen Geräten ab Donut ausgeführt, da 4 die API-Ebene von Donut ist (Build.VERSION_CODES.DONUT entspricht 4).

if(Build.VERSION.SDK_INT >= 4.0){
    //this code will be executed on devices running on DONUT (NOT ICS) or later
}

Dieses Beispiel ist ein Grund, warum die Verwendung von "magischen Zahlen" eine schlechte Angewohnheit ist.

28
Michał Kisiel

Zum Beispiel funktioniert eine Funktion nur für api21 up, wenn wir die folgenden Fehler in api21 down beheben

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

Beachten Sie, dass Build.VERSION.SDK_INT nicht zuverlässig ist, es wird von @ Falcon165o erwähnt, und kürzlich bin ich auch auf dieses Problem gestoßen.

Um die String-Daten (basierend auf Android-Versionsliste ) des aktuell installierten Android zu erhalten, habe ich folgenden Code erstellt:

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
}

Beispiel für eine Ausgabe, die erzeugt wird:

Marshmallow v6.0, API-Level: 23

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

benutze diese Klasse

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

Verwenden Sie diese Methode:

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

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