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
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:
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>