Oferecer suporte a links diretos

A partir da versão 1.2.0, o Navigation 3 oferece suporte a links diretos para destinos no seu app usando as classes DeepLinkRequest e DeepLinkMatcher.

Para oferecer suporte a links diretos no seu app, siga estas etapas:

  1. Defina filtros de intent no AndroidManifest.xml para especificar quais URIs seu app pode processar.
  2. Crie instâncias DeepLinkMatcher para mapear as solicitações recebidas para as suas chaves de navegação.
  3. Corresponda às solicitações recebidas no método onCreate ou onNewIntent da sua Activity e atualize o backstack de acordo.

Criar um DeepLinkRequest

Um DeepLinkRequest representa um link direto recebido. Ele contém um DeepLinkUri e RequestExtras opcionais com informações adicionais, como a ação da intent ou o Tipo MIME.

Fornecer extras de DeepLinkRequest

Para armazenar informações adicionais relacionadas ao link direto, use a RequestExtras classe. Para tornar a definição e a instanciação de extras com segurança de tipo, a biblioteca fornece a interface RequestExtrasKey e a DSL requestExtras.

Além disso, a biblioteca fornece duas chaves extras e auxiliares associados:

Para definir seus próprios extras personalizados, implemente a RequestExtrasKey interface com um genérico tipado:

Também é possível usar emptyRequestExtras() para construir uma instância vazia ou combinar extras usando os + (plus) e - (minus) operadores.

Criar um DeepLinkRequest de uma Intent

No Android, é possível criar um DeepLinkRequest diretamente de uma Intent. Quando construído dessa forma, o DeepLinkRequest é criado da seguinte maneira:

  • O uri é copiado do campo data da intent.
  • Se não for nulo, o tipo MIME e os extras de ação serão definidos nos campos de intent correspondentes.
  • Todos os intent.extras com valores não nulos são salvos como um SavedState em DeepLinkRequest.IntentExtrasKey.
  • Todos os extras adicionais fornecidos usando o parâmetro extras são adicionados.

Um DeepLinkMatcher mapeia instâncias de DeepLinkRequest recebidas para chaves de navegação que podem ser adicionadas à backstack do seu app. O Navigation 3 fornece três correspondentes integrados: UriDeepLinkMatcher para correspondência de URI baseada em padrões, StaticKeyDeepLinkMatcher para links básicos e BackStackMatcher para criar pilhas de retorno sintéticas. A biblioteca também oferece suporte a correspondentes personalizados para casos de uso não cobertos pelos correspondentes integrados.

Para mais informações, consulte Criar DeepLinkMatchers.

Adicionar filtros de intent

Para permitir que um link direto inicie sua atividade, defina os elementos correspondentes <intent-filter> no AndroidManifest.xml do seu app. Para mais informações, consulte Adicionar filtros de intent para links recebidos.

Corresponder uma solicitação recebida

Depois de criar as instâncias de DeepLinkMatcher, você pode corresponder as solicitações recebidas na sua atividade.

Para corresponder uma solicitação recebida, siga estas etapas:

  1. Instancie as instâncias de DeepLinkMatcher.
  2. Reúna todas as instâncias de DeepLinkMatcher, de forma explícita ou usando multibindings.
  3. Crie um DeepLinkRequest da Intent recebida.
  4. Corresponda a solicitação a todos os correspondentes e encontre a melhor correspondência.
  5. Crie o backstack a partir do resultado da correspondência.