0Pricing
Android Academy · Lección

Acciones y deep links

Añada botones y abra la pantalla adecuada

Acciones y deep links es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.

Acciones y enlaces profundos

Las notificaciones resultan útiles cuando hacen algo. Al tocar una, debería abrirse la pantalla adecuada, y los botones de acción deberían realizar tareas rápidas. Ambas funciones dependen de PendingIntent.

Qué es un PendingIntent

Un PendingIntent es un token que se entrega al sistema para que pueda ejecutar un Intent en su nombre más adelante, incluso cuando su aplicación no está en ejecución. Las notificaciones lo utilizan para iniciar su actividad.

Crear un PendingIntent de contenido

Construya un Intent para la pantalla que se abrirá, envuélvalo en un PendingIntent y asígnelo con setContentIntent para que al tocarlo se abra esa pantalla.

val intent = Intent(context, MainActivity::class.java)
val pending = PendingIntent.getActivity(
    context, 0, intent,
    PendingIntent.FLAG_IMMUTABLE
)
builder.setContentIntent(pending).setAutoCancel(true)

La marca de mutabilidad

Desde Android 12, un PendingIntent debe especificar FLAG_IMMUTABLE o FLAG_MUTABLE. Prefiera FLAG_IMMUTABLE, a menos que el sistema necesite completar datos, como ocurre con algunas respuestas.

Añadir un botón de acción

Use addAction con un icono, una etiqueta y un PendingIntent para añadir un botón táctil a la notificación, como «Responder» o «Marcar como leído».

builder.addAction(
    R.drawable.ic_reply,
    "Reply",
    replyPendingIntent
)

Las acciones activan componentes

El PendingIntent de una acción puede dirigirse a una Activity, un Service o un BroadcastReceiver. Un botón «Marcar como leído» suele dirigirse a un receiver para funcionar sin abrir ninguna pantalla.

val markIntent = Intent(context, MarkReadReceiver::class.java)
val markPending = PendingIntent.getBroadcast(
    context, 0, markIntent, PendingIntent.FLAG_IMMUTABLE
)

Enlaces profundos a una pantalla

Un enlace profundo abre un destino específico dentro de su aplicación, no solo la pantalla de inicio. Con Navigation Compose puede crear un PendingIntent que llegue a una ruta exacta.

Crear un PendingIntent para un enlace profundo

El componente Navigation ofrece NavDeepLinkBuilder (o un Intent de enlace profundo con una URI) para construir un PendingIntent dirigido a un destino y sus argumentos.

val deepLinkPending = NavDeepLinkBuilder(context)
    .setGraph(R.navigation.nav_graph)
    .setDestination(R.id.chatScreen)
    .setArguments(bundleOf("chatId" to "42"))
    .createPendingIntent()

Enlaces profundos basados en URI

También puede registrar un patrón de URI en su grafo de navegación y crear un Intent con esa Uri. Al tocar la notificación, se accede directamente a la pantalla correspondiente.

val intent = Intent(
    Intent.ACTION_VIEW,
    "myapp://chat/42".toUri(),
    context, MainActivity::class.java
)

Conservar la pila de retroceso

En los enlaces profundos, asegúrese de que la pila de retroceso sea coherente, de modo que al pulsar Atrás se vuelva a una pantalla principal en lugar de salir de la aplicación. TaskStackBuilder o el creador de enlaces profundos de navegación se encargan de ello.

Códigos de solicitud únicos

Si crea varios PendingIntent diferentes, asigne a cada uno un código de solicitud distinto, que es el segundo argumento. Los intents idénticos con el mismo código se tratan como el mismo PendingIntent.

Comprobación rápida

Compruebe cuánto ha aprendido sobre las acciones y los enlaces profundos.

Resumen

Ha añadido interactividad:

  • PendingIntent permite que el sistema actúe en su nombre; use FLAG_IMMUTABLE
  • setContentIntent define la acción al tocar
  • addAction añade botones dirigidos a actividades, servicios o receivers
  • Los enlaces profundos abren pantallas exactas y conservan la pila de retroceso

Siguiente: el permiso de ejecución para notificaciones.

Preguntas frecuentes

¿La lección «Acciones y deep links» es gratis?

Sí — el texto completo de «Acciones y deep links» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Acciones y deep links»?

Añada botones y abra la pantalla adecuada Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Android Academy?

No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Acciones y deep links»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Android Academy?

Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Canales de notificación
  2. Crear una notificación
  3. Acciones y deep links
  4. El permiso de notificaciones en tiempo de ejecución
← Volver a Android Academy