¿Hay alguna forma de obtener la versión API que el teléfono está ejecutando actualmente?
android
android-api-levels
Parth Mehta
fuente
fuente
Respuestas:
Como se describe en la documentación de Android, el nivel de SDK (entero) que ejecuta el teléfono está disponible en:
android.os.Build.VERSION.SDK_INT
La clase correspondiente a este int está en la
android.os.Build.VERSION_CODES
clase.Ejemplo de código:
Editar : Este SDK_INT está disponible desde Donut (Android 1.6 / API4), así que asegúrese de que su aplicación no sea retrocompatible con Cupcake (Android 1.5 / API3) cuando la use o su aplicación se bloqueará (gracias al Programador Bruce por la precisión) .
La documentación de Android correspondiente está aquí y aquí
fuente
minSdkVersion
en4
(Android 1.6) y continúe.Muy fácil:
Salida:
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 ¡Build.VERSION.RELEASE funcionará sin importar el uso de la versión estándar de Android o no!
Para usarlo, podrías hacer esto;
fuente
int android.os.Build.VERSION.SDK_INT
ypublic static final int SDK_INT
yAdded in API level 4
¿cómo podría regresar int (no Integer)NULL
?NULL
es un estado para un objeto, por lo que su Build o VERSION podría sernull
teóricamente, pero en tal caso no soloSDK_INT
sinoRELEASE
que también causará un NPE. SDK_INT probablemente podría causar "No hay tal excepción de método" o algo así pero no nulo o NPE. Si solo la ROM personalizada rompe los documentos y el método declarado comopublic static final Integer SDK_INT
. Solo estoy tratando de determinar la naturaleza de un problema para hacer una solución.null
no tiene sentido.Teniendo en cuenta todo lo dicho, aquí está el código que uso para detectar si el dispositivo tiene Froyo o un sistema operativo Android más reciente (2.2+):
Obviamente, puede modificar eso si es necesario para tener en cuenta las versiones 1.0 y 1.5 de Android en caso de que necesite un verificador genérico. Probablemente terminarás con algo como esto:
Avísame si el código no te funciona.
fuente
prueba esto:
fuente
android.os.Build.VERSION.SDK debería darle el valor del Nivel API. Puede encontrar fácilmente el mapeo desde el nivel de API a la versión de Android en la documentación de Android. Creo que 8 es para 2.2, 7 para 2.1, y así sucesivamente.
fuente
Entendido. Está usando el
getApplicationInfo()
método de laContext
clase.fuente
SDK.INT es compatible con Android 1.6 y superior
SDK es compatible con todas las versiones
Así que hago:
Créditos a: CommonsWare sobre esta respuesta
fuente
Prefiero tener la versión como número para ser manejada más fácilmente que escribí esto:
fuente
Está funcionando feliz codificación
Nota Asegúrese de que su paquete de importación sea correcto (importe el paquete, el nombre del paquete de la aplicación; de lo contrario, no funcionará correctamente)
fuente
Mejoré el código que usé
fuente