Tip Android #21: notificaciones en la barra de estado

16/05/2013
android tip

En el tip anterior vimos cómo hacer uso de las funcionalidades básicas del servicio de descargas. Ahora para mostrar notificaciones en la barra de estado vamos a ver otro servicio del sistema, en este caso se trata de NotificationManager el cual se encuentra disponible en todas las versiones de Android.

Partiremos de un proyecto de ejemplo con un único layout que mostrará un botón cuya pulsación provocará el envío de una notificación a la barra de estado. Esta acción es sencilla de implementar y consiste básicamente en obtener el servicio y enviarle una notificación en un objeto de tipo Notification que se puede construir con Notification.Builder de forma similar a cómo se crearía un AlertDialog por defecto del sistema. Ahora bien, este Builder sólo está disponible si usamos HoneyComb o la librería de compatibilidad y en este tip por simplicidad vamos a crear la notificación con el método «tradicional» (y deprecated desde HoneyComb). El código está debidamente comentado.

package com.danielme.tipsandroid.notificaciones;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.danieme.tipsandroid.notificaciones.R;

/**
 * 
 * @author danielme.com
 * 
 */
public class MainActivity extends Activity {

	private static final String DESDE_NOTIFICACION = "desdeNotificacion";

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		if (getIntent().getExtras() != null)
		{
			boolean mostrarToast = getIntent().getExtras().getBoolean(DESDE_NOTIFICACION, false);
			if (mostrarToast)
			{
				Toast.makeText(this, R.string.desdeNoti, Toast.LENGTH_SHORT).show();
			}
		}
	}
	
	public void mostrarNotificacion(View button)
	{
	    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

	//		Notification notificacion = new NotificationBuilder(this)
	//        .setContentTitle("New mail from " + "test@gmail.com")
	//        .setContentText("Subject")
	//        .setSmallIcon(R.drawable.ic_launcher);
	    
	    //indicamos icono, texto emergente en la barra y la fecha que queramos
	    Notification notificacion = new Notification(R.drawable.ic_launcher, getText(R.string.mensajebarra), System.currentTimeMillis());
	    //intent hacia la activity que se ejecutará cuando se pulse la notificación. Enviamos un parámetro para saber que llegamos
	    //a la activity desde la notificación y mostrar un Toast
	    Intent notificacionIntent = new Intent(getApplicationContext(), MainActivity.class);
	    notificacionIntent.putExtra(DESDE_NOTIFICACION, true);
	    PendingIntent notificacionPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, notificacionIntent, 0);
	    //contenido de la notificación
	    notificacion.setLatestEventInfo(this.getApplicationContext(), getText(R.string.titulo), getText(R.string.descripcion), notificacionPendingIntent);
		//el atributo flags de la notifiacción nos permite ciertas opciones
	    notificacion.flags |= Notification.FLAG_AUTO_CANCEL;//oculta la notificación una vez pulsada
	    //idem para defaults
	    notificacion.defaults |= Notification.DEFAULT_SOUND; //sonido
	    //añadimos efecto de vibración, necesitamos el permiso <uses-permission android:name="android.permission.VIBRATE" />
	    notificacion.defaults |= Notification.DEFAULT_VIBRATE;
	    //se muestra
	    notificationManager.notify(0, notificacion);		
	}

}

El resultado final en Android 2.2


En próximos tips veremos cómo sacar más partido a la barra de notificaciones 😉

El proyecto completo para Eclipse ADT se encuentra en Github. Para más información sobre cómo utilizar GitHub, consultar este artículo.

<< TIPS ANDROID

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.