icono_twiter icono Facebook
Carlos García Pérez

Técnico especialista en informática de empresa (CEU).

Ingeniero Técnico en Informática de Sistemas (UPM)

Creador de MobileTest, Haaala!, Girillo, toi18n.

Charla sobre desarrollo de aplicaciones en Android.

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2011-08-03

Tutorial visitado 4.764 veces Descargar en PDF
Android: Leer correos de Gmail

Android: Leer correos de Gmail

  1. Introducción
  2. Captura de pantalla de la aplicación a construir
  3. Código fuente del ejemplo
  4. Otros métodos y consideraciones

Introducción

Este tutorial os voy a proporcionar un ejemplo de como acceder a los correos electrónicos de Gmail desde vuestras aplicaciones Android sin tener que solicitar al usuario la contraseña de su cuenta de correo.

Para empezar te diré, que no necesita acceder a Internet, es decir, que los correos están ya descargados por el cliente de correo que tiene preinstalado Android y configurado.

Este tutorial surge como apoyo al lector después de realizar muchos esfuerzos e investigaciones para crear mi aplicación Haaala!

Captura de pantalla de la aplicación a construir

Es una aplicación sencilla (didáctica), un botón que al hacer clic en el se ejecuta una tarea que accede al correo electrónico y muestra el asunto de los correos recibidos en desde una determinada fecha.

Código fuente del ejemplo

Puedes descargarte el código fuente haciendo clic aquí

Manos a la obra..

Ventana principal de la aplicación:

Contrato de comunicación entre actividad y tarea en background (tampoco haría falta hacerlo así, hay otras muchas formas de comunicación..)

Tarea que accede a través de consultas a un Content Provider a los datos de Gmail:

Si quieres más información sobre posibles parámetros de todo, busca en Google información sobre Gmail.java ContentProvider

Objeto de negocio que nos construye la tarea desde el contenido de un correo electrónico

El archivo de configuración de la aplicación: AndroidManifest.xml

La ventana principal de la aplicación

Otros métodos y consideraciones:

Los usuarios son muy reticentes a proporcionar sus contraseñas de acceso a servicios tan importantes como Gmail, Facebook, etc... un método que cada vez está más extendido es el de usar el protocolo OAuth (o en caso de Google, además los protocolos propietarios: AuthSub y ClientLogin) para conceder a las aplicaciones determinados privilegios de acceso a los datos.

En el caso de Google, actualmente hay un rico API sobre muchos de sus Servicios (Google Maps, Latitude, Contacts, Picasa, etc.) los cuales encapsulan (wrapper) los datos que nos proporcionan las invocaciones a los servicios exportados en la nueva arquitectura que está migrando Google, de hecho existe un API en fase Beta.

El servicio de Gmail es un tanto especial, pues no hay un API del mismo tipo que para los otros servicios, pero si que hay distintas formas de acceso. He investigado bastante y conseguido acceso por todos los métodos y he visto en todas ellas las siguientes limitaciones:

  • ¿A través de OAuth (v1 o v2)? » Sólo podremos acceder a un flujo de datos ATOM en donde podemos obtener el número de mensajes no leídos, los asuntos, un fragmento del cuerpo, la fecha y el emisor.
  • API para acceder a IMAP y SMTP via Oauth, potente pero hay que hacer muchos pasos en donde se necesitan conocimientos técnicos, por lo que no lo veo viable para aplicaciones de uso general.
  • ¿El AccountManager de Android? » El AccesToken sólo nos vale para conseguir el flujo ATOM.. es decir limitado para Gmail.
  • ¿Pedirle los datos de acceso al usuario? Pues entonces sin problemas, tienes aceso por JavaMail a todo (envio, recepción, etc.), claro otra cosa es que el usuario quiera ponerla en la aplicación :-).

Bueno, espero que os sea de utilidad.
Un saludo. Carlos García

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2012-11-25-18:32:10

Autor: takines

Hola Carlos,tengo una tablet Pacal 2,quiero leer el Gmail(tiene Android 4)normal de Google y no puedo,me sale el Gmail de Android,te agradecería ,me echases una mano,gracias y enhorabuena.

Fecha publicación: 2012-03-18-09:12:18

Autor: carlosgp

Dependiendo de vuestra versión de Android, Google a cancelado los permisos de lectura de GMail, produciendose la siguiente excepción:

Permission Denial: opening provider com.google.android.gm.provider.MailProvider...

requires. com.google.android.gm.permission.READ_GMAIL or com.google.android.gm.permission.WRITE_GMAIL.

Está explicado en:
http://groups.google.com/a/googleproductforums.com/forum/#!category-topic/gmail/reading-and-receiving-messages/XD0C4sw9K7U