Ayudita Android

R

Hola señores.

A ver si consigo explicar bien la duda que tengo. En mi app, que va desde api 8 hasta la api 19 (4.4 kitkat) tengo un par de trozos de código que utilizan métodos solo para versiones posteriores a la api 17.

Como hago un check de la versión antes de ejecutar el método de api>17 el programa no peta, pero si que al ejecutarlo en android con versiones anteriores me da un warning de método "no contrado" como es totalmente normal.

if (Build.VERSION.SDK_INT >= 18) {
			//Versiones posteriores a android 4.2
			if (wifi.isScanAlwaysAvailable()) {
				wifi.startScan();
				
		}else {
			//si entramos por aquí es porque está desactivado
			manejarWifi1();
			FALSE");
		}
}
	

La pregunta que tengo es, si esta forma es la forma BUENA, o es chapucera. Y en caso de que no sea la correcta, si sois tan amables de decirme como se haría para evitar el warning de dalvik, me hacéis un gran favor.

Gracias por adelantado.

Saludos.

zoeshadow

Hasta donde yo se, es la única manera que hay de hacer que ciertas partes del código solo se ejecuten en ciertas versiones, lo único que te diria es que uses las constantes de versión para facilitar la lectura ( ya que sino tienes que saber que API LEVEL es cada uno...

http://developer.android.com/reference/android/os/Build.VERSION_CODES.html

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1)
....
} 

http://stackoverflow.com/questions/21874227/why-do-android-os-build-version-codes-work-on-older-platforms

Aquí explican que es una constante que se inyecta en tiempo de compilación, por lo que no hay problema de que no exista en dispositivos antiguos ni nada así...

2 respuestas
R

Gracias #2, buen aporte!

Tig
  1. No uses "18" a palo seco, hazlo como #2 con

    Build.VERSION_CODES.JELLY_BEAN_MR1
  2. Si quieres evitar el error lint, añade esto encima del método

@SuppressLint("NewApi")
1 respuesta
R

#4 Ah, eso era una opción que me daba eclipse para solventar el error. Muchas gracias, lo añadiré.