Tutorial de notificaciones personalizadas de Android

Tutorial de notificaciones personalizadas de Android

En este tutorial, aprenderá cómo crear notificaciones personalizadas en su aplicación de Android. Una notificación es un mensaje que puede mostrar al usuario fuera de su aplicación de Android. Se puede hacer clic en las notificaciones para realizar una acción o para abrir una nueva actividad. Crearemos una notificación personalizada y una notificación simple y, al hacer clic en la notificación, se mostrarán los resultados de una nueva actividad. Vamos a empezar…

Cree un nuevo proyecto en Eclipse  File  >  New  >  Android Application Project. Complete los detalles y nombre su proyecto  NotificationTutorial .

Nombre de la aplicación:  Tutorial de notificación

Nombre del proyecto:  NotificaciónTutorial

Nombre del paquete:  com.androidbegin.notificationtutorial

Abra su  MainActivity .java  y pegue el siguiente código.

Actividad principal .java

paquete com.androidbegin.notificationtutorial;

importar android.os.Bundle;
importar android.app.Actividad;
importar android.app.NotificationManager;
importar android.app.PendingIntent;
importar android.content.Intent;
importar android.support.v4.app.NotificationCompat;
importar android.view.Menú;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget.Button;
importar android.widget.RemoteViews;

clase pública MainActivity extiende Actividad {
	@Anular
	Vacío protegido onCreate (Paquete de estado de instancia guardado) {
		super.onCreate(estadoDeInstanciaGuardado);
		setContentView(R.layout.notificationmain);

		Botón bnotificar = (Botón) findViewById(R.id.notificación);

		Botón bcustomnotify = (Botón) findViewById(R.id.customnotification);

		bnotify.setOnClickListener(nuevo OnClickListener() {

			public void onClick (Ver arg0) {
				Notificación();
				// TODO stub de método generado automáticamente
			}
		});

		bcustomnotify.setOnClickListener(nuevo OnClickListener() {

			public void onClick (Ver arg0) {
				Notificación Personalizada();
				// TODO stub de método generado automáticamente
			}
		});

	}

	Notificación de vacío público () {
		// Establecer título de notificación
		String strtitle = getString(R.string.notificationtitle);
		// Establecer texto de notificación
		String strtext = getString(R.string.notificationtext);

		// Abrir la clase NotificationView al hacer clic en la notificación
		Intención intención = nueva intención (esto, NotificationView.class);
		// Enviar datos a la clase NotificationView
		intent.putExtra("título", strtitle);
		intent.putExtra("texto", strtext);
		// Abrir NotificationView.java Actividad
		PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
				PendingIntent.FLAG_UPDATE_CURRENT);

		//Crear notificación usando NotificationCompat.Builder
		Generador de NotificationCompat.Builder = nuevo NotificationCompat.Builder (esto)
				// Establecer icono
				.setSmallIcon(R.dibujable.logopequeño)
				// Establecer mensaje de teletipo
				.setTicker(getString(R.string.notificationticker))
				// Establecer título
				.setContentTitle(getString(R.string.notificationtitle))
				// Establecer texto
				.setContentText(getString(R.string.notificationtext))
				// Agregue un botón de acción debajo de la notificación
				.addAction(R.drawable.ic_launcher, "Botón de acción", pIntent)
				// Establecer PendingIntent en Notificación
				.setContentIntent(pIntent)
				// Descartar notificación
				.setAutoCancel(verdadero);

		// Crear administrador de notificaciones
		Administrador de notificaciones administrador de notificaciones = (Administrador de notificaciones) getSystemService (NOTIFICACIÓN_SERVICIO);
		// Crear notificación con el administrador de notificaciones
		administrador de notificaciones.notificar(0, constructor.construir());

	}

	public void CustomNotification() {
		// Uso de RemoteViews para enlazar diseños personalizados en Notificación
		RemoteViews remoteViews = new RemoteViews(getPackageName(),
				R.layout.notificación personalizada);

		// Establecer título de notificación
		String strtitle = getString(R.string.customnotificationtitle);
		// Establecer texto de notificación
		String strtext = getString(R.string.customnotificationtext);

		// Abrir la clase NotificationView al hacer clic en la notificación
		Intención intención = nueva intención (esto, NotificationView.class);
		// Enviar datos a la clase NotificationView
		intent.putExtra("título", strtitle);
		intent.putExtra("texto", strtext);
		// Abrir NotificationView.java Actividad
		PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
				PendingIntent.FLAG_UPDATE_CURRENT);

		Generador de NotificationCompat.Builder = nuevo NotificationCompat.Builder (esto)
				// Establecer icono
				.setSmallIcon(R.dibujable.logopequeño)
				// Establecer mensaje de teletipo
				.setTicker(getString(R.string.customnotificationticker))
				// Descartar notificación
				.setAutoCancel(verdadero)
				// Establecer PendingIntent en Notificación
				.setContentIntent(pIntent)
				// Establecer RemoteViews en Notificación
				.setContent(vistasremotas);

		// Ubique y establezca la imagen en customnotificationtext.xml ImageViews
		RemoteViews.setImageViewResource(R.id.imagenotileft,R.drawable.ic_launcher);
		remoteViews.setImageViewResource(R.id.imagenotiright,R.drawable.androidhappy);

		// Ubique y configure el texto en customnotificationtext.xml TextViews
		remoteViews.setTextViewText(R.id.title,getString(R.string.customnotificationtitle));
		remoteViews.setTextViewText(R.id.text,getString(R.string.customnotificationtext));

		// Crear administrador de notificaciones
		Administrador de notificaciones administrador de notificaciones = (Administrador de notificaciones) getSystemService (NOTIFICACIÓN_SERVICIO);
		// Crear notificación con el administrador de notificaciones
		administrador de notificaciones.notificar(0, constructor.construir());

	}

	@Anular
	public boolean onCreateOptionsMenu(Menú menú) {
		// Inflar el menú; esto agrega elementos a la barra de acción si está presente.
		getMenuInflater().inflate(R.menu.actividad_principal, menú);
		devolver verdadero;
	}

}

Hemos creado dos botones en esta aplicación, el primer botón mostrará una notificación simple y el otro mostrará una notificación personalizada. Ambas notificaciones se crean mediante NotificationCompat.Builder . El uso  de NotificationCompat.Builder le permite crear su aplicación por debajo de la versión 4.1 de Android. Un PendingIntent permite hacer clic en las notificaciones o abrir una nueva actividad. Hemos preparado una imagen de notificación personalizada de muestra para este tutorial. Pon tus imágenes de muestra descargadas en tu  res  >  drawable-hdpi.

Imagen de muestra

[etiqueta wpfilebase = ID de archivo = 44 tpl = botón de descarga /]

A continuación, cree un diseño gráfico de archivo XML para su MainActivity. Vaya a  res  >  diseño  > Haga clic con el botón derecho en  diseño  >  Nuevo  >  Archivo XML de Android
Asigne un nombre a su nuevo archivo XML como  notificación principal.xml  y pegue el siguiente código.

notificaciónprincipal.xml

<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="match_parent"
    android_layout_height="match_parent"
    herramientas_context=".Actividad principal" >

    <Botón
        android_id="@+id/notificación"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_centerInParent="verdadero"
        android_text="@cadena/notificación" />

    <Botón
        android_id="@+id/notificación personalizada"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_centerInParent="verdadero"
        android_layout_below="@+id/notificación"
        android_text="@cadena/notificación personalizada" />

</RelativeLayout>

Producción:

Notificación XML principal

A continuación, cree un diseño gráfico XML para su notificación personalizada. Vaya a  res  >  diseño  > Haga clic con el botón derecho en  diseño  >  Nuevo  >  Archivo XML de Android
Asigne un nombre a su nuevo archivo XML  customnotification.xml  y pegue el siguiente código.

notificación personalizada.xml 

<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="match_parent"
    android_layout_height="match_parent" >

    <ImagenVista
        android_id="@+id/imagenotileft"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content" />

    <Vista de texto
        android_id="@+id/título"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_toRightOf="@+id/imagenotileft" />

    <Vista de texto
        android_id="@+id/texto"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_below="@+id/título"
        android_layout_toRightOf="@+id/imagenotileft" />

    <ImagenVista
        android_id="@+id/imagenotiright"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_alignParentRight="verdadero"
        Android: relleno = "10dp" />

</RelativeLayout>

A continuación, cree una actividad para ver los resultados de los clics de notificación. Vaya a  Archivo  >  Nuevo  >  Clase  y asígnele el nombre  NotificationView.java. Seleccione su paquete llamado  com.androidbegin.notificationtutorial  y haga clic en  Finalizar .

Abra su  NotificationView .java  y pegue el siguiente código.

Vista de notificación .java

paquete com.androidbegin.notificationtutorial;

importar android.app.Actividad;
importar android.app.NotificationManager;
importar android.content.Intent;
importar android.os.Bundle;
importar android.widget.TextView;

La clase pública NotificationView extiende la actividad {
	Título de cadena;
	Cadena de texto;
	TextView txttítulo;
	Vista de texto texto de texto;

	@Anular
	public void onCreate (Paquete guardadoInstanceState) {
		super.onCreate(estadoDeInstanciaGuardado);
		setContentView(R.layout.notificationview);

		// Crear administrador de notificaciones
		Administrador de notificaciones administrador de notificaciones = (Administrador de notificaciones) getSystemService (NOTIFICACIÓN_SERVICIO);
		// Descartar notificación
		administrador de notificaciones.cancel(0);

		// Recuperar los datos de MainActivity.java
		Intención i = getIntent();

		título = i.getStringExtra("título");
		texto = i.getStringExtra("texto");

		// Localiza la vista de texto
		txttitle = (TextView) findViewById(R.id.title);
		txttext = (TextView) findViewById(R.id.text);

		// Establecer los datos en TextView
		txttitle.setText(título);
		txttext.setText(texto);
	}
}

A continuación, cree un diseño gráfico XML para su NotificationView. Vaya a  res  >  diseño  > Haga clic con el botón derecho en  diseño  >  Nuevo  >  Archivo XML de Android
Asigne un nombre a su nuevo archivo XML como  notificaciónview.xml y pegue el siguiente código.

notificaciónview.xml

<?versión xml="1.0" codificación="UTF-8"?>
<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="fill_parent"
    android_layout_height="fill_parent" >

    <Vista de texto
        android_id="@+id/lbltitle"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_text="@cadena/lbltitle" />

    <Vista de texto
        android_id="@+id/lbltext"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_below="@+id/título lbl"
        android_text="@cadena/lbltext" />

    <Vista de texto
        android_id="@+id/título"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_toRightOf="@+id/lbltitle" />

    <Vista de texto
        android_id="@+id/texto"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
         android_layout_below="@+id/título"
        android_layout_toRightOf="@+id/lbltext" />

</RelativeLayout>

Cambie el nombre de la aplicación y los textos en  strings.xml . Abra su  strings.xml  y pegue el siguiente código. Vaya a  res  >  valores  >  cadenas.xml

cadenas.xml

<?versión xml="1.0" codificación="utf-8"?>
<recursos>

    <string name="app_name">Tutorial de notificación</string>
    <string name="hello_world">¡Hola mundo!</string>
    <string name="menu_settings">Configuración</string>
    <string name="notificationtitle">Tutorial de notificación de Android</string>
    <string name="notificationtext">Texto de notificación</string>
    <string name="notificationticker">Marcador de notificaciones</string>
    <string name="customnotificationtitle">Tutorial de notificación de Android</string>
    <string name="customnotificationtext">Texto de notificación personalizado</string>
    <string name="customnotificationticker">Marcador de notificación personalizada</string>
    <string name="lbltitle">"Título: "</string>
    <string name="lbltext">"Texto: "</string>
    <string name="notificación">Notificación</string>
    <string name="customnotification">Notificación personalizada</string>

</recursos>

En su  AndroidManifest.xml , debemos declarar una actividad. Abra su  AndroidManifest.xml  y pegue el siguiente código.

AndroidManifest.xml

<?versión xml="1.0" codificación="utf-8"?>
<manifiesto xmlns_android="http://schemas.android.com/apk/res/android"
    paquete="com.androidbegin.notificationtutorial"
    android_versionCode="1"
    android_versionName="1.0" >

    <usos-sdk
        android_minSdkVersion="8"
        android_targetSdkVersion="15" />

    <aplicación
        Android: permitir copia de seguridad = "verdadero"
        android_icono="@dibujable/ic_launcher"
        android_etiqueta="@cadena/nombre_aplicación"
        android_tema="@estilo/AppTheme" >
        <actividad
            android_nombre=".Actividad principal"
            android_etiqueta="@cadena/nombre_aplicación" >
            <intent-filter>
                <acción android_name="android.intent.action.MAIN" />

                <categoría android_name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </actividad>
        <actividad android_name=".NotificationView" >
        </actividad>
    </aplicación>

</manifiesto>

Producción:

Captura de pantalla del tutorial de notificación de Android

Código fuente

[purchase_link id=”7934″ text=”Comprar para descargar el código fuente” style=”button” color=”green”]