tengo targetsdkversion studio saber que como android android-api-levels

targetsdkversion - sdk version android



Recuperando la versión de la API de Android programáticamente (9)

Muy fácil:

String manufacturer = Build.MANUFACTURER; String model = Build.MODEL; int version = Build.VERSION.SDK_INT; String versionRelease = Build.VERSION.RELEASE; Log.e("MyActivity", "manufacturer " + manufacturer + " /n model " + model + " /n version " + version + " /n versionRelease " + versionRelease );

Salida:

E/MyActivity: manufacturer ManufacturerX model SM-T310 version 19 versionRelease 4.4.2

¿Hay alguna forma de obtener la versión de API que el teléfono está ejecutando actualmente?


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

android.os.Build.VERSION.SDK_INT

La clase correspondiente a este int se encuentra en la clase android.os.Build.VERSION_CODES .

Ejemplo de código:

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

Edición : este SDK_INT está disponible desde Donut (android 1.6 / API4), así que asegúrese de que su aplicación no sea compatible 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 correspondiente de Android está android.os.Build.VERSION.SDK_INT y android.os.Build.VERSION_CODES


Lo tengo. Se usa el método getApplicationInfo() de la clase de Context .


Mejoré el código que usé

public static float getAPIVerison() { float f=1f; try { StringBuilder strBuild = new StringBuilder(); strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2)); f= Float.valueOf(strBuild.toString()); } catch (NumberFormatException e) { Log.e("myApp", "error retriving api version" + e.getMessage()); } return f; }


Prefiero tener la versión como número para que sea más fácil de escribir que lo que escribí:

public static float getAPIVerison() { Float f = null; try { StringBuilder strBuild = new StringBuilder(); strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2)); f = new Float(strBuild.toString()); } catch (NumberFormatException e) { Log.e("", "error retriving api version" + e.getMessage()); } return f.floatValue(); }


Teniendo en cuenta todo lo dicho, aquí está el código que utilizo para detectar si el dispositivo tiene Froyo o un sistema operativo Android más nuevo (2.2+):

public static boolean froyoOrNewer() { // SDK_INT is introduced in 1.6 (API Level 4) so code referencing that would fail // Also we can''t use SDK_INT since some modified ROMs play around with this value, RELEASE is most versatile variable if (android.os.Build.VERSION.RELEASE.startsWith("1.") || android.os.Build.VERSION.RELEASE.startsWith("2.0") || android.os.Build.VERSION.RELEASE.startsWith("2.1")) return false; return true; }

Obviamente, puede modificar esa condición para tener en cuenta las versiones 1.0 y 1.5 de Android en caso de que necesite un comprobador genérico. Probablemente termines con algo como esto:

// returns true if current Android OS on device is >= verCode public static boolean androidMinimum(int verCode) { if (android.os.Build.VERSION.RELEASE.startsWith("1.0")) return verCode == 1; else if (android.os.Build.VERSION.RELEASE.startsWith("1.1")) { return verCode <= 2; } else if (android.os.Build.VERSION.RELEASE.startsWith("1.5")) { return verCode <= 3; } else { return android.os.Build.VERSION.SDK_INT >= verCode; } }

Déjame saber si el código no está funcionando para ti.


android.os.Build.VERSION.SDK debe darle el valor del nivel de API. Puede encontrar fácilmente la asignación desde el nivel de api hasta 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.


prueba esto:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) { // only for gingerbread and newer versions }


Build.VERSION.RELEASE;

Eso te dará los números reales de tu versión; También conocido como 2.3.3 o 2.2. El problema con el uso de Build.VERSION.SDK_INT es que si tienes un teléfono rooteado o una ROM personalizada, podrías tener un sistema operativo ninguno estándar (también conocido como mi android está ejecutando 2.3.5) y eso devolverá un nulo cuando uses Build.VERSION.SDK_INT así que Build.VERSION.RELEASE funcionará sin importar qué!

Para usarlo, simplemente podrías hacer esto;

String androidOS = Build.VERSION.RELEASE;