Obsługa precyzyjnych linków

Od wersji 1.2.0 komponent Navigation 3 obsługuje precyzyjne linki do miejsc docelowych w aplikacji za pomocą klas DeepLinkRequest i DeepLinkMatcher.

Aby obsługiwać precyzyjne linki w aplikacji, wykonaj te czynności:

  1. Zdefiniuj filtry intencji w pliku AndroidManifest.xml, aby określić, które identyfikatory URI może obsługiwać Twoja aplikacja.
  2. Utwórz instancje DeepLinkMatcher, aby mapować przychodzące żądania na klucze nawigacyjne.
  3. Dopasuj przychodzące żądania w metodzie onCreate lub onNewIntent aktywności i odpowiednio zaktualizuj stos wsteczny.

Utwórz DeepLinkRequest

DeepLinkRequest reprezentuje przychodzący precyzyjny link. Zawiera on element DeepLinkUri i opcjonalny element RequestExtras z dodatkowymi informacjami, takimi jak działanie intencji lub typ MIME.

Dodaj DeepLinkRequest dodatkowych komponentów

Aby przechowywać dodatkowe informacje związane z precyzyjnym linkiem, użyj klasy RequestExtras. Aby zapewnić bezpieczeństwo typów podczas definiowania i tworzenia instancji dodatków, biblioteka udostępnia interfejs RequestExtrasKey i język DSL requestExtras.

Dodatkowo biblioteka udostępnia 2 klucze dodatków i powiązane z nimi funkcje pomocnicze:

Aby zdefiniować własne niestandardowe parametry dodatkowe, zaimplementuj interfejs RequestExtrasKey z wpisanym typem ogólnym:

Możesz też użyć emptyRequestExtras(), aby utworzyć pustą instancję, lub połączyć dodatki za pomocą operatorów + (plus) i - (minus).

Tworzenie DeepLinkRequest z Intent

Na urządzeniu z Androidem możesz utworzyć DeepLinkRequest bezpośrednio z Intent. W takim przypadku DeepLinkRequest jest tworzony w ten sposób:

  • Wartość uri jest kopiowana z pola data intencji.
  • Jeśli nie jest pusta, typ MIME i dodatki działania są ustawiane na podstawie odpowiednich pól intencji.
  • Wszystkie intent.extras z wartościami innymi niż null są zapisywane jako SavedState w DeepLinkRequest.IntentExtrasKey.
  • Dodawane są wszystkie dodatkowe parametry podane za pomocą parametru extras.

DeepLinkMatcher mapuje przychodzące instancje DeepLinkRequest na klawisze nawigacyjne, które można dodać do stosu wstecznego aplikacji. Nawigacja 3 udostępnia 3 wbudowane dopasowania: UriDeepLinkMatcher do dopasowywania identyfikatorów URI na podstawie wzorców, StaticKeyDeepLinkMatcher do podstawowych linków i BackStackMatcher do tworzenia syntetycznych stosów wstecznych. Biblioteka obsługuje też niestandardowe dopasowania w przypadkach, które nie są obsługiwane przez wbudowane dopasowania.

Więcej informacji znajdziesz w artykule Tworzenie obiektów DeepLinkMatcher.

Dodawanie filtrów intencji

Aby umożliwić precyzyjnemu linkowi rozpoczęcie aktywności, musisz zdefiniować pasujące elementy <intent-filter> w pliku AndroidManifest.xml aplikacji. Więcej informacji znajdziesz w artykule Dodawanie filtrów intencji do linków przychodzących.

Dopasowywanie żądania przychodzącego

Po utworzeniu instancji DeepLinkMatcher możesz dopasowywać przychodzące żądania w swojej aktywności.

Aby dopasować przychodzące żądanie, wykonaj te czynności:

  1. Utwórz instancje DeepLinkMatcher.
  2. Zbierz wszystkie instancje DeepLinkMatcher, bezpośrednio lub za pomocą wielowiązań.
  3. Utwórz DeepLinkRequest z przychodzącego Intent.
  4. Dopasuj żądanie do wszystkich dopasowań i znajdź najlepsze dopasowanie.
  5. Utwórz stos wsteczny na podstawie wyniku dopasowania.