Gibt es eine Möglichkeit, die API-Version abzurufen, auf der das Telefon gerade ausgeführt wird?
android
android-api-levels
Parth Mehta
quelle
quelle
Antworten:
Wie in der Android-Dokumentation beschrieben, ist die SDK-Ebene (Ganzzahl), auf der das Telefon ausgeführt wird, verfügbar in:
android.os.Build.VERSION.SDK_INT
Die diesem int entsprechende Klasse befindet sich in der
android.os.Build.VERSION_CODES
Klasse.Codebeispiel:
Bearbeiten : Dieses SDK_INT ist seit Donut (android 1.6 / API4) verfügbar. Stellen Sie daher sicher, dass Ihre Anwendung nicht mit Cupcake (android 1.5 / API3) retro-kompatibel ist, wenn Sie es verwenden, da Ihre Anwendung sonst abstürzt (danke an Programmer Bruce für die Präzision). .
Die entsprechende Android-Dokumentation finden Sie hier und hier
quelle
minSdkVersion
auf4
(Android 1.6) und fahren Sie fort.Sehr leicht:
Ausgabe:
quelle
Das gibt Ihnen die tatsächlichen Nummern Ihrer Version; aka 2.3.3 oder 2.2. Das Problem bei der Verwendung von Build.VERSION.SDK_INT besteht darin, dass Sie bei einem gerooteten Telefon oder einem benutzerdefinierten ROM möglicherweise ein nicht standardmäßiges Betriebssystem haben (auch bekannt als mein Android läuft 2.3.5), das bei Verwendung von Build.VERSION.SDK_INT eine Null zurückgibt Build.VERSION.RELEASE funktioniert also unabhängig von der Standard-Android-Version oder nicht!
Um es zu benutzen, könnten Sie dies einfach tun;
quelle
int android.os.Build.VERSION.SDK_INT
undpublic static final int SDK_INT
undAdded in API level 4
wie könnte int (nicht Integer) zurückkehrenNULL
?NULL
ist ein Zustand für ein Objekt, so dass sein Build oder seine VERSIONnull
theoretisch sein könnte, aber in diesem Fall nicht nur,SDK_INT
sondernRELEASE
auch eine NPE verursachen wird. SDK_INT könnte wahrscheinlich "Keine solche Methodenausnahme" oder ähnliches verursachen, aber nicht null oder NPE. Wenn nur ein benutzerdefiniertes ROM die Dokumente und die als deklarierte Methode beschädigtpublic static final Integer SDK_INT
. Ich versuche nur, die Art eines Problems zu bestimmen, um eine Problemumgehung zu finden.null
keinen Sinn ergibt.Unter Berücksichtigung aller genannten Punkte ist hier der Code, mit dem ich erkenne, ob das Gerät über Froyo oder ein neueres Android-Betriebssystem (2.2+) verfügt:
Natürlich können Sie diese Bedingung ändern, um die Versionen 1.0 und 1.5 von Android zu berücksichtigen, falls Sie einen generischen Prüfer benötigen. Sie werden wahrscheinlich so etwas haben:
Lassen Sie mich wissen, wenn der Code für Sie nicht funktioniert.
quelle
Versuche dies:
quelle
android.os.Build.VERSION.SDK sollte Ihnen den Wert der API-Ebene geben. Sie können die Zuordnung von der API-Ebene zur Android-Version leicht in der Android-Dokumentation finden. Ich glaube, 8 steht für 2,2, 7 für 2,1 und so weiter.
quelle
Ich habs. Es verwendet die
getApplicationInfo()
Methode derContext
Klasse.quelle
SDK.INT wird für Android 1.6 und höher unterstützt
SDK wird für alle Versionen unterstützt
So ich mache:
Dank an: CommonsWare über diese Antwort
quelle
Ich bevorzuge es, die Version als Nummer einfacher zu handhaben, als ich dies geschrieben habe:
quelle
Es funktioniert Happy Coding
Hinweis Bitte stellen Sie sicher, dass Ihr Importpaket korrekt ist (importieren Sie das Paket mit dem Namen Ihres Anwendungspakets, sonst funktioniert es nicht richtig).
quelle
Ich habe den von mir verwendeten Code verbessert
quelle