Supportare i link diretti

A partire dalla versione 1.2.0, Navigation 3 supporta i link diretti alle destinazioni della tua app utilizzando le classi DeepLinkRequest e DeepLinkMatcher.

Per supportare i link diretti nella tua app, completa i seguenti passaggi:

  1. Definisci i filtri per intent in AndroidManifest.xml per specificare gli URI che la tua app può gestire.
  2. Crea istanze DeepLinkMatcher per mappare le richieste in entrata alle tue chiavi di navigazione.
  3. Abbina le richieste in entrata nel metodo onCreate o onNewIntent dell'attività e aggiorna di conseguenza il back stack.

Crea un DeepLinkRequest

Un DeepLinkRequest rappresenta un link diretto in entrata. Contiene un DeepLinkUri e RequestExtras facoltativi con informazioni aggiuntive, come l'azione intent o il tipo MIME.

Fornisci gli extra di DeepLinkRequest

Per archiviare informazioni aggiuntive relative al link diretto, utilizza la RequestExtras classe. Per rendere la definizione e l'istanza degli extra type-safe, la libreria fornisce l'interfaccia RequestExtrasKey e il DSL requestExtras.

Inoltre, la libreria fornisce due chiavi extra e gli helper associati:

  • MimeTypeExtrasKey: utilizzata per archiviare una String del tipo MIME.
  • ActionExtrasKey (solo Android): utilizzata per archiviare una String dell'azione Intent.

Per definire i tuoi extra personalizzati, implementa l'RequestExtrasKey interfaccia con un generico tipizzato:

Puoi anche utilizzare emptyRequestExtras() per creare un'istanza vuota o combinare gli extra utilizzando gli operatori + (plus) e - (minus).

Crea un DeepLinkRequest da un Intent

Su Android, puoi creare un DeepLinkRequest direttamente da un Intent. Quando viene creato in questo modo, DeepLinkRequest viene creato come segue:

Un DeepLinkMatcher mappa le istanze DeepLinkRequest in entrata alle chiavi di navigazione che possono essere aggiunte al back stack dell'app. Navigation 3 fornisce tre matcher integrati: UriDeepLinkMatcher per la corrispondenza degli URI basata su pattern, StaticKeyDeepLinkMatcher per i link di base e BackStackMatcher per la creazione di stack indietro sintetici. La libreria supporta anche matcher personalizzati per i casi d'uso non coperti dai matcher integrati.

Per saperne di più, vedi Creare DeepLinkMatchers.

Aggiungi filtri per intent

Per consentire a un link diretto di avviare l'attività, devi definire gli elementi corrispondenti <intent-filter> in AndroidManifest.xml della tua app. Per saperne di più, vedi Aggiungere filtri per intent per i link in entrata.

Abbina una richiesta in entrata

Dopo aver creato le istanze DeepLinkMatcher, puoi abbinare le richieste in entrata nella tua attività.

Per abbinare una richiesta in entrata:

  1. Crea un'istanza delle istanze di DeepLinkMatcher.
  2. Raccogli tutte le istanze di DeepLinkMatcher, in modo esplicito o utilizzando multibinding.
  3. Crea un DeepLinkRequest dall'Intent in entrata.
  4. Abbina la richiesta a tutti i matcher e trova la corrispondenza migliore.
  5. Crea il back stack dal risultato della corrispondenza.