(+34) 958084455 informacion[arroba]academiaandroid.com
Visualización Notificación Toast

Gestión de Notificaciones para Android

Post Series: Gestor de Notificaciones

Las notificaciones Android son los mensajes o alertas que avisan al usuario sobre alguna novedad o incidencia que se haya producido. En este tutorial veremos:

  • Definición y principales características de la clase NotificationManager.
  • Cómo crear notificaciones en Android.
  • Otras formas de notificar al usuario: clases Toast y AlertDialog

En un tutorial y vídeo posterior, desarrollaremos un ejercicio práctico con la implementación de la clase NotificationManager.

Definición de NotificationManager

Es la clase encargada de mostrar las notificaciones en la barra de estado del terminal, y por lo tanto notificar al usuario de los acontecimientos que se están produciendo. Clase añadida en el nivel 1 de API.
Las diferentes formas de mostrar las notificaciones en un dispositivo Android serían las siguientes:

  • Mostrando un icono en la barra de estado, accesible por el usuario al seleccionarlo
  • Con el encendido o parpadeo del LED del dispositivo
  • Alertando al usuario con un sonido, vibración o parpadeo de la luz de fondo de la pantalla.

Características de la clase NotificationManager

En este punto nos centraremos en enumerar las principales características de la clase NotificationManager:

  • Permite alertar al usuario de eventos que se han producido, como una llamada perdida o un mensaje de texto entrante, pudiendo seleccionar dicha notificación para acceder a la aplicación que maneja el evento.
  • A diferencia de la clase Toast (otra forma de notificar al usuario acciones que se realizan en el dispositivo), permite al usuario interactuar con la notificación recibida.
  • Posibilita la actualización de la información notificada, si esta no ha sido cancelada.
Mensaje tipo "Toast"

Mensaje tipo “Toast”

 

Como crear notificaciones en Android

A continuación se mostrarán los pasos necesarios para construir una notificación con la clase NotificationManager:

En primer lugar se incluye el package de la clase NotificationManager con su correspondiente import:

import android.app.NotificationManager;
Se crea un objeto de la clase Intent que lanzará la nueva Activity al seleccionar la notificación recibida. Recibe como parámetros el contexto de la aplicación y la Activity a lanzar:

Intent intent = new Intent(Context packageContext, Class<?> cls);
Se crea una instancia de la clase PendingIntent, recuperando una nueva Activity que será iniciada, recibiendo como parámetros el contexto de la aplicación, un código único de petición, el objeto intent creado anteriormente con la Activity a lanzar, y el valor de que partes del intent se pueden suministrar:

PendingIntent pIntentEmail = PendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags);
Se crea un objeto de la clase Builder, contenida dentro de la clase NotificationCompat, para ayudarnos a controlar la construcción y diseño de la notificación que se desea implementar (esta clase está definida dentro de la librería android-support-v4.jar, que permite utilizar APIs más recientes en Android, incluso si esta se ejecuta en versiones antiguas):

NotificationCompat.Builder ntfBuilder = new NotificationCompat.Builder(Context context);
En las siguientes líneas se define el título a mostrar junto a la notificación, el icono que se mostrará, el mensaje que se mostrará en la barra de estado al crear la notificación (aparece solo unos segundos), y por último asociaremos a la notificación creada, una acción que posibilitará abrir la aplicación que ha generado el evento, con solo hacer click sobre la notificación creada:

Se obtiene una referencia de la clase NotificationManager, por medio del método getSystemService, que recibe como parámetro una constante con el nombre del servicio del sistema:

NotificationManager notificationManager = (NotificationManager) getSystemService(String name);
Por último, con este objeto, se realiza la llamada al método notify, que recibirá como parámetros un identificador único para la notificación creada, y el resultado de NotificationCompat.Builder construído anteriormente. Para ello llamaría al método build (ntfBuilder.build()):
notificationManager.notify(int id, Notification notification);

Otras notificaciones disponibles en Android

En el siguiente apartado, veremos otras formas de alertar al usuario de eventos que se están ejecutando en el dispositivo:

Toast

Clase que nos permite poder mostrar un mensaje al usuario, superpuesto en la ventana y sin bloquear el funcionamiento normal de la aplicación, durante un periodo de tiempo indicado. Por defecto se mostrará en la parte inferior de la pantalla, y no será necesaria ninguna acción para que este desaparezca automáticamente. Clase añadida en el nivel 1 de API.

En la siguiente imagen podemos apreciar su funcionamiento, con el mensaje “Tiene varias notificaciones disponibles” (remarcado en rojo):

 

Visualización notificación Toast

 

Implementación clase Toast

Bastará con utilizar la clase Toast, y llamar a su método estático makeText, que recibirá como parámetros el contexto de la Activity, el mensaje a mostrar, y la duración de dicho mensaje (se pueden indicar los milisegundos de duración, o usando las constantes LENGTH_LONG o LENGTH _SHORT).

Si deseamos modificar lo posición del mensaje en pantalla, bastará con invocar al método setGravity(), que recibirá como parámetros la posición utilizando las constantes de la clase Gravity, y las coordenadas del eje x e y. Por último se llamará al método show() para mostrarlo en la pantalla:


En el la documentación oficial Android de la clase Toast,  puedes encontrar información sobre la misma, por ejemplo, cómo es posible personalizar los mensajes.

AlertDialog

Clase que nos permite alertar al usuario, con la particularidad de que es necesaria su intervención para que el mensaje desaparezca de la pantalla. Clase añadida en el nivel 1 de API.

En la siguiente imagen se puede apreciar el diálogo generado:

 

Notificación AlertDialog

Implementación clase AlertDialog

En primer lugar se incluye el package de la clase AlertDialog con su correspondiente import:

import android.app.AlertDialog;
Crearemos un objeto de la clase Builder, contenida dentro de la clase AlertDialog:

AlertDialog.Builder alertDialog = new AlertDialog.Builder(Context context);

Finalmente llamamos a los métodos que crearán y mostrarán el diálogo:

Más información en la documentación oficial Android de la clase AlertDialog.Builder


Autor: José Antonio Gázquez Rodríguez – Academia Android