¿Cómo puedo comprobar la versión del sistema de Android?
¿Alguien sabe cómo puedo comprobar la versión del sistema (por ejemplo, 1.0
, 2.2
, etc.) mediante programación?
- Problemas de reproducción de Android Studio
- Encontrar el número de versión de la aplicación en el código
- Error de minSdkVersion al cargar APK en Android Market
- ¿Incluyendo la versión webkit utilizada en el navegador Android?
- ¿Cómo incluir la cadena de versión en el nombre de archivo al crear Android apk con hormiga?
- Versión de la versión nacional / regional del Panel de control de desarrolladores de Android
- Versión errónea keystore al hacer llamadas https
- Cómo obtener la versión de la biblioteca interna referenciada de apk
- MediaPlayer de Android - setDataSource y lanzamiento - IllegalStateException
- ¿Qué significa la versión MR?
- ¿Alguna regla específica para asignar VersionName en Android?
- Nombre de la versión del kernel de Android
- Distribución histórica de las versiones de la plataforma Android
Compruebe android.os.Build.VERSION
.
CODENAME
: El codename de desarrollo actual, o la cadena "REL" si se trata de una compilación de liberación.INCREMENTAL
: El valor interno utilizado por el control de origen subyacente para representar esta generación.RELEASE
: La cadena de versiones visibles para el usuario.
Ejemplo de cómo usarlo:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) { // only for gingerbread and newer versions }
Build.VERSION.RELEASE;
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 si usted tiene un teléfono arraigado o ROM de encargo, usted podría tener un OS sin estándar (aka mi androide está funcionando 2.3.5) y que volverá un null al usar Build.VERSION.SDK_INT Así Build.VERSION.RELEASE funcionará no importa qué!
Build.Version es el lugar al que ir para estos datos. Aquí hay un fragmento de código para saber cómo formatearlo.
public String getAndroidVersion() { String release = Build.VERSION.RELEASE; int sdkVersion = Build.VERSION.SDK_INT; return "Android SDK: " + sdkVersion + " (" + release +")"; }
Parece que este "Android SDK: 19 (4.4.4)"
Puedes encontrar la versión de Android en Build.VERSION
.
La documentación recomienda comprobar Build.VERSION.SDK_INT
contra los valores en Build.VERSION_CODES
.
Esto está bien siempre y cuando te Build.VERSION.SDK_INT
cuenta de que Build.VERSION.SDK_INT
sólo se introdujo en el nivel 4 de la API, que 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 tendría que utilizar el Build.VERSION.SDK
obsoleto en Build.VERSION.SDK
lugar.
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 de la 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_SANDWICH
equivale a 14. 14 es el nivel API de Ice Cream Sandwich, mientras que la versión del sistema es 4.0. Así que si escribes 4.0, tu código se ejecutará en todos los dispositivos que comiencen desde Donut, porque 4 es el nivel API de Donut ( Build.VERSION_CODES.DONUT
es 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 que usar 'número mágico' es un mal hábito.
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) { //do anything you like. }
Para comprobar la versión del dispositivo que sea mayor o igual que Marshmallow, utilice este código.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){ }
Para ckecking otros apenas cambian los VERSION_CODES como,
K para kitkat,
L para loolipop N para Nougat y así sucesivamente …
Por ejemplo, una característica sólo funciona para api21 hasta el siguiente se corrigen los errores en api21 abajo
if(Build.VERSION.SDK_INT >= 21) { //only api 21 above }else{ //only api 21 down }
Tenga en cuenta que Build.VERSION.SDK_INT no es fiable, se menciona por @ Falcon165o y recientemente he encontrado con que también.
Así que para obtener los datos de la cadena (basado en la lista de versión de Android ) de Android instalado actualmente, hice un código como este:
//Current Android version data public static String currentVersion(){ double release=Double.parseDouble(Build.VERSION.RELEASE); String codeName="Unsupported";//below Jelly bean OR above nougat 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"; return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT; }
Ejemplo de una salida que produce:
Marshmallow v6.0, API Nivel: 23
Utilizar esta clase
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; } }
Utilice este método:
public static String getAndroidVersion() { String versionName = ""; try { versionName = String.valueOf(Build.VERSION.RELEASE); } catch (Exception e) { e.printStackTrace(); } return versionName; }
- ¿Cómo comprobar si un servicio se está ejecutando en Android?
- Eclipse "Descripción del proyecto no válida" al crear un nuevo proyecto desde un origen existente