¿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?

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 obtener la versión SDK de Android de un dispositivo desde la línea de comandos
  • ¿Qué Eclipse para Android?
  • Clase de carga basada en la versión de SDK
  • ¿Existe una estrategia recomendada para lanzar una versión beta de una aplicación a un número limitado de usuarios a través del Android Market?
  • ¿Por qué android.os.Build.VERSION_CODES funciona en plataformas más antiguas
  • ¿Cómo puedo comprobar la versión de Open Mobile API en Android?
  • Cómo utilizar una función sólo si la versión es 11+
  • ¿Puedo instalar la API de Android más reciente para orientar la versión de API inferior?
  • ¿Qué versiones de Android SDK admiten la codificación en qué versiones de Java?
  • Cambiar el número de versión de la base de datos SQLite
  • Versión para Android de IntelliJ sdk
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.