En el artículo anterior comenzamos a abordar el tema de las notificaciones en Android. Hablamos de los Toast que son las notificaciones más simples que tiene Android. En este artículo vamos a hablar acerca de las notificaciones en la barra de estado. Este tipo de notificaciones son las que se muestran en el dispositivo cuando entra un SMS o cuando nos hacen una llamada perdida.
Estas notificaciones generalmente constan de un icono y un texto descriptivo del mensaje, al desplegar la barra de estado vamos a poder ver la notificación más descriptiva.
Pues bien vamos a hacer un ejemplo donde mostremos una notificación en la barra de estado.
Vamos a crear un botón que al presionarlo pondrá en la barra de estado la notificación. El diseño de nuestro ejemplo quedará de la siguiente manera:
Ahora vamos a entrar en el código. Lo primero que tenemos que hacer es capturar el evento clic de nuestro botón para esto en el método onCreate de nuestra Activity vamos a capturar el botón.
Button boton = (Button)findViewById(R.id.button);
Y luego vamos a definir el onclick del botón
boton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
Y es en el método onClick donde vamos a poner todo el código para mostrar la notificación.
Lo primero que vamos a hacer es obtener una referencia del servicio de notificaciones de Android. Para esto utilizaremos el método getSystemService como muestra el siguiente código.
//Obteniendo la referencia al servicio de notificaciones
String service = Context.NOTIFICATION_SERVICE;
NotificationManager notManager = (NotificationManager) getSystemService(service);
Luego vamos a configurar el aspecto de la notificación que vamos a mostrar para ello definimos el icono que vamos a mostrar, el texto y la hora y se lo pasamos al constructor de la notificación.
//Configuramos la notificación
int icono = android.R.drawable.stat_notify_error;
CharSequence texto = "Probando Notificacion";
long hora = System.currentTimeMillis();
Notification notificacion = new Notification(icono, texto, hora);
Y por último nos queda definir el texto y la descripción que se mostrará al desplegar la barra de notificaciones, así como la Activity que se mostrará cuando seleccionemos la notificación.
//Configuramos el Intent
CharSequence titulo = "Mensaje de Alerta";
CharSequence descripcion = "Ejemplo de notificación.";
Intent notIntent = new Intent(getApplicationContext(),
MainActivity.class);
PendingIntent contIntent = PendingIntent.getActivity(
getApplicationContext(), 0, notIntent, 0);
notificacion.setLatestEventInfo(
getApplicationContext(), titulo, descripcion, contIntent);
Como podemos ver en el código anterior lo primero que hacemos es preparar la información, es decir el título, la descripción y el intent que ejecutaremos cuando la notificación sea seleccionada. Luego creamos un PendingIntent y le atachamos el intent creado y luego con el método getApplicationContext de la notificación terminamos de preparar la misma.
Una vez configurados todos los parámetros necesarios de la notificación pues procedemos a mostrar la misma, esto lo hacemos de la siguiente forma:
//Mostrando notificación
notManager.notify(1, notificacion);
Con el objeto NotificationManager creado al inicio y mediante su método notify conseguimos lo que queremos, pasándole un id único de notificación y el objeto Notificación que preparamos con anterioridad.