jueves, 29 de marzo de 2012

Android Tip: .git, doc and META-INF folders

Alguna vez veréis que estas carpetas están dentro de vuestros apk y alguien puede incluso que os diga que sois descuidados y habéis dejado documentación sensible dentro de vuestro apk.

GOLPE DE REMO a toda esa gente.

 Son propios del apk e incluyen control de versiones y documentación necesaria para el propio apk; además ant en su versión 1.8.2 y superiores ya se encarga de excluir .git por ejemplo. Os invito a que lo comprobéis viendo que es lo que hay realmente dentro de esas carpetas ;).

Happy coding.

Android Tips: Unique pending intent based on extras

Seguramente a muchos os ha pasado que al crear varias notificaciones cada una con su pending intent con flag UPDATE CURRENT pues aunque los extras cambian se os reemplazan los pending intent por el último y al darle a la notificación ( da igual cual ) se ejecuta el último pending intent.

Pues bien, hay un truco bien sencillo para que el intent sea único basado en los extras que transporta, al intent que vais a pasar al pending intent le ponéis lo siguiente:


intentDeEjemplo.setData(Uri.parse(intentDeEjemplo.toUri(Intent.URI_INTENT_SCHEME)));


De esta forma el intent será único por los extras que contiene y no se reemplazará a menos que estos sean los mismos.


Happy coding.

miércoles, 28 de marzo de 2012

Android Tips: Inauguramos sección. | Android column '_id' does not exist?

Programando para Android, uno descubre muchos pequeños trucos y soluciones que son dificiles de encontrar y están mal documentadas. Iré añadiendo aquí los tips que vaya viendo para mi propia búsqueda y para a quien le pueda servir.

Tip 1: Android column '_id' does not exist?

En Android para usar cursores como el del SimpleCursorAdapter, este necesita que la tabla tenga una columna "_id"; si no la tiene creadla, si usais otra ponedle un AS ( otra AS _id ) y aquí viene el truco:

Si estais en SDK 7 y usáis una consulta compleja SQL para recuperar los datos y devolvéis las columnas con un identificador de tabla ( C._id, C.nombre por ejemplo ) necesitais obligatoriamente poner el AS en todos los campos ( C._id AS _id, C.nombre AS nombre ) o no encontrará ninguno de ellos.


Tip 2: String.isEmpty();

Si pretendéis que vuestra aplicación funcione en Android 2.1 no hagáis uso de esa función, pues no existe.