支援深層連結

1.2.0 版開始,Navigation 3 支援使用 DeepLinkRequestDeepLinkMatcher 類別,深層連結至應用程式中的目的地。

如要在應用程式中支援深層連結,請完成下列步驟:

  1. AndroidManifest.xml定義意圖篩選器,指定應用程式可處理的 URI。
  2. 建立 DeepLinkMatcher 執行個體,將連入要求對應至導覽鍵。
  3. 在活動的 onCreateonNewIntent 方法中比對傳入的要求,並據此更新返回堆疊。

建立 DeepLinkRequest

DeepLinkRequest 代表傳入的深層連結。其中包含 DeepLinkUri 和選用的 RequestExtras,以及其他資訊,例如意圖動作或 MIME 類型。

提供 DeepLinkRequest 額外內容

如要儲存與深層連結相關的其他資訊,請使用 RequestExtras 類別。為確保定義和例項化額外資訊時的型別安全,程式庫提供 RequestExtrasKey 介面和 requestExtras DSL。

此外,程式庫還提供兩個額外鍵和相關輔助程式:

如要定義自己的自訂 extra,請使用型別泛型實作 RequestExtrasKey 介面:

您也可以使用 emptyRequestExtras() 建構空白執行個體,或使用 + (plus) 和 - (minus) 運算子合併額外資訊。

Intent 建立 DeepLinkRequest

在 Android 裝置上,你可以直接從 Intent 建立 DeepLinkRequest。以這種方式建構時,DeepLinkRequest 的建構方式如下:

DeepLinkMatcher 會將傳入的 DeepLinkRequest 執行個體對應至可新增至應用程式返回堆疊的導覽鍵。Navigation 3 提供三種內建比對器:UriDeepLinkMatcher 用於根據模式比對 URI、StaticKeyDeepLinkMatcher 用於基本連結,以及 BackStackMatcher 用於建構合成返回堆疊。此外,程式庫也支援自訂比對器,適用於內建比對器未涵蓋的用途。

詳情請參閱「建立 DeepLinkMatchers」。

新增意圖篩選器

如要啟用深層連結來啟動活動,您必須在應用程式的 AndroidManifest.xml 中定義相符的 <intent-filter> 元素。詳情請參閱「新增連入連結的意圖篩選器」。

比對傳入要求

建立 DeepLinkMatcher 執行個體後,您可以在活動中比對傳入的要求。

如要比對傳入的要求,請完成下列步驟:

  1. 例項化 DeepLinkMatcher 例項。
  2. 彙整所有 DeepLinkMatcher 執行個體,無論是明確彙整或使用多重繫結
  3. 從傳入的 Intent 建立 DeepLinkRequest
  4. 比對所有比對器中的要求,找出最相符的項目。
  5. 從比對結果建立返回堆疊。