Réponses:
Vérifiez android.os.Build.VERSION
.
CODENAME
: Le nom de code de développement actuel, ou la chaîne "REL" s'il s'agit d'une version.INCREMENTAL
: Valeur interne utilisée par le contrôle de source sous-jacent pour représenter cette génération.RELEASE
: La chaîne de version visible par l'utilisateur.
Exemple d'utilisation:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// only for gingerbread and newer versions
}
Build.Version est l'endroit où aller pour ces données. Voici un extrait de code pour savoir comment le formater.
public String getAndroidVersion() {
String release = Build.VERSION.RELEASE;
int sdkVersion = Build.VERSION.SDK_INT;
return "Android SDK: " + sdkVersion + " (" + release +")";
}
Il ressemble à ceci "SDK Android: 19 (4.4.4)"
Build.VERSION.RELEASE;
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 quoi qu'il arrive!
Pour vérifier la version de l'appareil qui est supérieure ou égale à Marshmallow, utilisez ce code.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
}
pour vérifier les autres, il suffit de changer les VERSION_CODES comme,
K pour kitkat,
L pour loolipop N pour Nougat et ainsi de suite ...
Vous pouvez trouver la version Android en regardant Build.VERSION
.
La documentation vous recommande de vérifier Build.VERSION.SDK_INT
les valeurs dans Build.VERSION_CODES
.
C'est bien tant que vous vous rendez compte que cela 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 vouliez que votre application s'exécute sur Android 1.5 ou une version antérieure, vous devriez utiliser la version obsolète à la Build.VERSION.SDK
place.
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 la même que la version système mais fait en fait référence au niveau 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 Ice Cream Sandwich, tandis que la version système est 4.0. Donc, si vous écrivez 4.0, votre code sera exécuté sur tous les appareils à partir de Donut, car 4 est le niveau API de Donut ( Build.VERSION_CODES.DONUT
é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 raison pour laquelle l'utilisation du «nombre magique» est une mauvaise habitude.
if(Build.VERSION.SDK_INT >= 15){
Par exemple, une fonctionnalité ne fonctionne que pour api21 up, ce qui suit, nous corrigeons les bugs dans api21 down
if(Build.VERSION.SDK_INT >= 21) {
//only api 21 above
}else{
//only api 21 down
}
Sachez que Build.VERSION.SDK_INT n'est pas fiable, il est mentionné par @ Falcon165o et récemment j'ai rencontré celui-là aussi.
Donc, pour obtenir les données String (basées sur la 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
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you like.
}
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;
}
}
Utilisez cette méthode:
public static String getAndroidVersion() {
String versionName = "";
try {
versionName = String.valueOf(Build.VERSION.RELEASE);
} catch (Exception e) {
e.printStackTrace();
}
return versionName;
}
Étant donné que vous avez bash
sur votre appareil Android, vous pouvez utiliser cette fonction bash:
function androidCodeName {
androidRelease=$(getprop ro.build.version.release)
androidCodeName=$(getprop ro.build.version.codename)
# Time "androidRelease" x10 to test it as an integer
case $androidRelease in
[0-9].[0-9]|[0-9].[0-9].|[0-9].[0-9].[0-9]) androidRelease=$(echo $androidRelease | cut -d. -f1-2 | tr -d .);;
[0-9].) androidRelease=$(echo $androidRelease | sed 's/\./0/');;
[0-9]) androidRelease+="0";;
esac
[ -n "$androidRelease" ] && [ $androidCodeName = REL ] && {
# Do not use "androidCodeName" when it equals to "REL" but infer it from "androidRelease"
androidCodeName=""
case $androidRelease in
10) androidCodeName+=NoCodename;;
11) androidCodeName+="Petit Four";;
15) androidCodeName+=Cupcake;;
20|21) androidCodeName+=Eclair;;
22) androidCodeName+=FroYo;;
23) androidCodeName+=Gingerbread;;
30|31|32) androidCodeName+=Honeycomb;;
40) androidCodeName+="Ice Cream Sandwich";;
41|42|43) androidCodeName+="Jelly Bean";;
44) androidCodeName+=KitKat;;
50|51) androidCodeName+=Lollipop;;
60) androidCodeName+=Marshmallow;;
70|71) androidCodeName+=Nougat;;
80|81) androidCodeName+=Oreo;;
90) androidCodeName+=Pie;;
100) androidCodeName+=ToBeReleased;;
*) androidCodeName=unknown;;
esac
}
echo $androidCodeName
}