Cómo admitir vínculos directos

A partir de la versión 1.2.0, Navigation 3 admite vínculos directos a destinos en tu app con las clases DeepLinkRequest y DeepLinkMatcher.

Para admitir vínculos directos en tu app, completa los siguientes pasos:

  1. Define filtros de intents en tu AndroidManifest.xml para especificar qué URIs puede controlar tu app.
  2. Crea instancias DeepLinkMatcher para asignar solicitudes entrantes a tus claves de navegación.
  3. Haz coincidir las solicitudes entrantes en el método onCreate o onNewIntent de tu actividad y actualiza la pila de actividades según corresponda.

Cómo crear un DeepLinkRequest

Un objeto DeepLinkRequest representa un vínculo directo entrante. Contiene un DeepLinkUri y un RequestExtras opcional con información adicional, como la acción de intent o el tipo de MIME.

Proporciona extras de DeepLinkRequest

Para almacenar información adicional relacionada con el vínculo directo, usa la RequestExtras clase. Para que la definición y la creación de instancias de extras sean seguras para el tipo, la biblioteca proporciona la interfaz RequestExtrasKey y el DSL requestExtras.

Además, la biblioteca proporciona dos claves de extras y asistentes asociados:

Para definir tus propios extras personalizados, implementa la RequestExtrasKey interfaz con un genérico con tipo:

También puedes usar emptyRequestExtras() para construir una instancia vacía o combinar extras con los operadores + (plus) y - (minus).

Cómo crear un DeepLinkRequest a partir de un Intent

En Android, puedes crear un DeepLinkRequest directamente desde un Intent. Cuando se construye de esta manera, el DeepLinkRequest se crea de la siguiente manera:

  • El uri se copia del campo data del intent.
  • Si no es nulo, los extras de tipo MIME y acción extras se establecen desde los campos de intent correspondientes.
  • Todos los intent.extras con valores no nulos se guardan como un SavedState en DeepLinkRequest.IntentExtrasKey.
  • Se agregan todos los extras adicionales que se proporcionan con el parámetro extras.

Un objeto DeepLinkMatcher asigna instancias DeepLinkRequest entrantes a claves de navegación que se pueden agregar a la pila de actividades de tu app. Navigation 3 proporciona tres comparadores integrados: UriDeepLinkMatcher para la coincidencia de URI basada en patrones, StaticKeyDeepLinkMatcher para vínculos básicos y BackStackMatcher para compilar pilas de actividades sintéticas. La biblioteca también admite comparadores personalizados para casos de uso que no cubren los comparadores integrados

Para obtener más información, consulta Cómo crear DeepLinkMatchers.

Cómo agregar filtros de intents

Para habilitar un vínculo directo para iniciar tu actividad, debes definir los elementos coincidentes <intent-filter> en el AndroidManifest.xml de tu app. Para obtener más información, consulta Cómo agregar filtros de intents para vínculos entrantes.

Cómo hacer coincidir una solicitud entrante

Después de crear tus instancias de DeepLinkMatcher, puedes hacer coincidir las solicitudes entrantes en tu actividad.

Para hacer coincidir una solicitud entrante, completa los siguientes pasos:

  1. Crea instancias de tus instancias de DeepLinkMatcher.
  2. Recopila todas tus instancias de DeepLinkMatcher, ya sea de forma explícita o con vinculaciones múltiples.
  3. Crea un DeepLinkRequest a partir del Intent entrante.
  4. Haz coincidir la solicitud con todos los comparadores y encuentra la mejor coincidencia.
  5. Crea la pila de actividades a partir del resultado de la coincidencia.