Android: cómo encontrar el nombre de la versión de Android mediante programación?

Escribo código para encontrar la versión de Android como esta

Versión de cadena = Build.VERSION.RELEASE;

Utilizando este código estoy obtener el número de versión, pero quiero nombre de la versión. Cómo obtener el nombre de la versión ??? /

Como se sugirió anteriormente, la reflexión parece ser la clave de esta cuestión. El StringBuilder y el formato adicional no es necesario, solo se agregó para ilustrar el uso.

import java.lang.reflect.Field; ... StringBuilder builder = new StringBuilder(); builder.append("android : ").append(Build.VERSION.RELEASE); Field[] fields = Build.VERSION_CODES.class.getFields(); for (Field field : fields) { String fieldName = field.getName(); int fieldValue = -1; try { fieldValue = field.getInt(new Object()); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NullPointerException e) { e.printStackTrace(); } if (fieldValue == Build.VERSION.SDK_INT) { builder.append(" : ").append(fieldName).append(" : "); builder.append("sdk=").append(fieldValue); } } Log.d(LOG_TAG, "OS: " + builder.toString()); 

En mi emulador 4.1, obtengo este resultado:

 D/MainActivity( 1551): OS: android : 4.1.1 : JELLY_BEAN : sdk=16 

¡Disfrutar!

http://developer.android.com/reference/android/os/Build.VERSION_CODES.html contiene campos que tienen el nombre que busca. Por lo tanto, puede usar la reflexión para encontrar qué campo corresponde al valor de la "versión".

¿Por qué quieres el nombre?

Mira esto:

 // Names taken from android.os.build.VERSION_CODES String[] mapper = new String[] { "ANDROID BASE", "ANDROID BASE 1.1", "CUPCAKE", "DONUT", "ECLAIR", "ECLAIR_0_1", "ECLAIR_MR1", "FROYO", "GINGERBREAD", "GINGERBREAD_MR1", "HONEYCOMB", "HONEYCOMB_MR1", "HONEYCOMB_MR2", "ICE_CREAM_SANDWICH", "ICE_CREAM_SANDWICH_MR1", "JELLY_BEAN" }; int index = Build.VERSION.SDK_INT - 1; String versionName = index < mapper.length? mapper[index] : "UNKNOWN_VERSION"; // > JELLY_BEAN) 

Tenga en cuenta que esta solución sólo funcionará en la medida en que los códigos de versión sigan siendo incrementados en uno, y tendrá que actualizar la lista con cada nueva versión de Android (si es preciso es importante).

Código optimizado, esto funcionará:

 import java.lang.reflect.Field; Field[] fields = Build.VERSION_CODES.class.getFields(); String osName = fields[Build.VERSION.SDK_INT + 1].getName(); Log.d("Android OsName:",osName); 

Usted obtendrá la información de estos

 android.os.Build.VERSION_CODES android.os.Build.VERSION.SDK_INT 

Se puede obtener más información de este enlace:

Recuperación de la versión de la API de Android mediante programación

Espero que esto te ayudará.

Como se describe en la documentación de Android, el nivel de SDK (entero) en el que se está ejecutando el teléfono está disponible en:

Android.os.Build.VERSION.SDK_INT;

El enum correspondiente a este int está en la clase android.os.Build.VERSION_CODES.

Ejemplo de código:

 int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= android.os.Build.VERSION_CODES.FROYO){ // Do something for froyo and above versions } else{ // do something for phones running an SDK before froyo } 

Editar: Este SDK_INT está disponible desde Donut (android 1.6 / API4), así que asegúrate de que tu aplicación no sea retro-compatible con Cupcake (android 1.5 / API3) cuando la uses o tu aplicación se bloquee (gracias al programador Bruce por la precisión) .

  • Ejecutando ndk-stack en arm64-v8a lib error con error Formato de archivo no reconocido
  • Android: No se puede cargar la biblioteca (94 tablas esenciales que faltan)
  • OpenCv con Android Studio 2.2+ usando nuevo gradel con cmake - referencia indefinida
  • Compilar ffmpeg con android ndk r5b
  • Android - javah no encuentra mi clase
  • React-Native + Android, solo para arquitectura armeabi
  • Android NDK versión de construcción
  • Construir android con clang en lugar de gcc? Y el clang stl lib en lugar de gnustl lib?
  • Android Studio 1.5 Opencv 3.0.0 calibración de la cámara de muestra se estrelló
  • Escriba a stdout en JNI Android? Sin <android / log.h>
  • Cómo configurar la vista de contenido de NativeActivity en un componente creado en Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.