Ignoro totalmente cualquier versión anterior a Eclair (7), Android 2.1 y muy pronto también dejamos de admitir el 2.1. Pero puede usar el SDK en lugar de SDK_INT.
Atom
12
El SDK estaba dependiente en el nivel 4 de la API. Utilice SDK_INT en su lugar.
erdomester
Tengo una pregunta: si se está ejecutando en un sistema anterior a GINGERBREAD, entonces no podemos obtener android.os.Build.VERSION_CODES.GINGERBREAD, ¿se bloqueará la aplicación?
HongchaoZhang
No, porque GINGERBREAD será reemplazado solo por el número durante la compilación de Java. Solo es necesario usar una versión de compilación más grande de Android.
ATom
97
Build.Version es el lugar al que acudir para obtener estos datos. Aquí hay un fragmento de código sobre cómo formatearlo.
Eso le dará los números reales de su versión; aka 2.3.3 o 2.2. El problema con el uso de Build.VERSION.SDK_INT es que si tiene un teléfono rooteado o una rom personalizada, podría tener un sistema operativo no estándar (también conocido como mi Android ejecuta 2.3.5) y eso devolverá un valor nulo cuando use Build.VERSION.SDK_INT ¡Así que Build.VERSION.RELEASE funcionará sin importar qué!
Desde SDK: "La cadena de versión visible para el usuario. Por ejemplo," 1.0 "o" 3.4b5 "." .... "3.4b5" ¿cómo puedo determinar qué número de versión es?
davs
La respuesta completa 2.3.3 es el número de versión, o 2.2, o 2.3.5 (rom personalizado en mi caso). Ese es el número de versión del sistema operativo en su conjunto.
Falcon165o
Devuelve lo mismo Menú >> Configuración >> Acerca del teléfono. Debe etiquetarse como Versión de firmware o algo que afecte.
Falcon165o
58
¿Cómo demonios podría un int devolver un nulo? SDK_INT es un int primitivo.
Zsolt Safrany
57
Para verificar la versión del dispositivo que es mayor o igual que Marshmallow, use este código.
Esto está bien siempre y cuando se dé cuenta de que Build.VERSION.SDK_INTsolo se introdujo en API Nivel 4, es decir, Android 1.6 (Donut). Por lo tanto, esto no le afectará, pero si desea que su aplicación se ejecute en Android 1.5 o anterior, entonces debería usar la obsoleta Build.VERSION.SDK.
No puedo comentar las respuestas, pero hay un gran error en la respuesta de Kaushik: SDK_INT no es lo mismo que la versión del sistema, pero en realidad se refiere al Nivel API.
if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.ICE_CREAM_SANDWICH){//this code will be executed on devices running ICS or later}
El valor Build.VERSION_CODES.ICE_CREAM_SANDWICHes igual a 14. 14 es el nivel API de Ice Cream Sandwich, mientras que la versión del sistema es 4.0. Entonces, si escribe 4.0, su código se ejecutará en todos los dispositivos a partir de Donut, porque 4 es el nivel API de Donut ( Build.VERSION_CODES.DONUTes igual a 4).
if(Build.VERSION.SDK_INT >=4.0){//this code will be executed on devices running on DONUT (NOT ICS) or later}
Este ejemplo es una razón por la cual usar 'número mágico' es un mal hábito.
Tenga en cuenta que Build.VERSION.SDK_INT no es confiable, es mencionado por @ Falcon165o y recientemente me encontré con ese también.
Entonces, para obtener los datos de String (basados en la lista de versiones de Android ) de Android actualmente instalado, hice un código como este:
Java
//Current Android version datapublicstaticString currentVersion(){double release=Double.parseDouble(Build.VERSION.RELEASE.replaceAll("(\\d+[.]\\d+)(.*)","$1"));String codeName="Unsupported";//below Jelly bean OR above Oreoif(release>=4.1&& release<4.4)codeName="Jelly Bean";elseif(release<5)codeName="Kit Kat";elseif(release<6)codeName="Lollipop";elseif(release<7)codeName="Marshmallow";elseif(release<8)codeName="Nougat";elseif(release<9)codeName="Oreo";return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT;}
Dado que tiene bashen su dispositivo Android, puede usar esta función bash:
function androidCodeName {
androidRelease=$(getprop ro.build.version.release)
androidCodeName=$(getprop ro.build.version.codename)# Time "androidRelease" x10 to test it as an integercase $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 in10) 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
}
Respuestas:
Compruebe
android.os.Build.VERSION
.fuente
Ejemplo de cómo usarlo:
fuente
Build.Version es el lugar al que acudir para obtener estos datos. Aquí hay un fragmento de código sobre cómo formatearlo.
Se parece a esto "SDK de Android: 19 (4.4.4)"
fuente
Eso le dará los números reales de su versión; aka 2.3.3 o 2.2. El problema con el uso de Build.VERSION.SDK_INT es que si tiene un teléfono rooteado o una rom personalizada, podría tener un sistema operativo no estándar (también conocido como mi Android ejecuta 2.3.5) y eso devolverá un valor nulo cuando use Build.VERSION.SDK_INT ¡Así que Build.VERSION.RELEASE funcionará sin importar qué!
fuente
Para verificar la versión del dispositivo que es mayor o igual que Marshmallow, use este código.
para chequear a otros simplemente cambie los VERSION_CODES como,
K para kitkat,
L para loolipop N para Turrón y así sucesivamente ...
fuente
Puedes encontrar la versión de Android mirando
Build.VERSION
.La documentación recomienda que compruebe
Build.VERSION.SDK_INT
los valores enBuild.VERSION_CODES
.Esto está bien siempre y cuando se dé cuenta de que
Build.VERSION.SDK_INT
solo se introdujo en API Nivel 4, es decir, Android 1.6 (Donut). Por lo tanto, esto no le afectará, pero si desea que su aplicación se ejecute en Android 1.5 o anterior, entonces debería usar la obsoletaBuild.VERSION.SDK
.fuente
No puedo comentar las respuestas, pero hay un gran error en la respuesta de Kaushik: SDK_INT no es lo mismo que la versión del sistema, pero en realidad se refiere al Nivel API.
El valor
Build.VERSION_CODES.ICE_CREAM_SANDWICH
es igual a 14. 14 es el nivel API de Ice Cream Sandwich, mientras que la versión del sistema es 4.0. Entonces, si escribe 4.0, su código se ejecutará en todos los dispositivos a partir de Donut, porque 4 es el nivel API de Donut (Build.VERSION_CODES.DONUT
es igual a 4).Este ejemplo es una razón por la cual usar 'número mágico' es un mal hábito.
fuente
if(Build.VERSION.SDK_INT >= 15){
Por ejemplo, una característica solo funciona para api21 arriba, lo siguiente arreglamos errores en api21 abajo
fuente
Tenga en cuenta que Build.VERSION.SDK_INT no es confiable, es mencionado por @ Falcon165o y recientemente me encontré con ese también.
Entonces, para obtener los datos de String (basados en la lista de versiones de Android ) de Android actualmente instalado, hice un código como este:
Java
Kotlin
Ejemplo de una salida que produce:
fuente
fuente
usa esta clase
fuente
Use este método:
fuente
Dado que tiene
bash
en su dispositivo Android, puede usar esta función bash:fuente