¿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 lo arreglamos los errores en api21 down

  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; } 
  • Versión errónea keystore al hacer llamadas https
  • Versión de la versión nacional / regional del Panel de control de desarrolladores de Android
  • ¿Qué SDK de Android debo usar ahora?
  • ¿Para qué versión de Android debo desarrollar?
  • Nombre de la versión del kernel de Android
  • Cargar aplicación de Android con código de versión diferente, pero el mismo nombre de versión
  • Versión para Android de IntelliJ sdk
  • ¿Alguna regla específica para asignar VersionName en Android?
  • ¿El mejor acercamiento para las versiones libres y pagadas de la aplicación de Androide?
  • Cómo aprender qué versión de la aplicación instalada mediante programación en android
  • ¿Cómo saber qué versión de ADT estamos utilizando en eclipse?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.