應用程式動作可讓使用者與 Google 助理交談,並直接進入特定 使用者說出「Ok Google,幫我叫車」這類的指令時,應用程式到達網頁 範例應用程式。」透過前景應用程式叫用,您可以進一步改善 就能大幅改善使用者體驗
前景應用程式叫用功能可讓系統比對內建意圖 (BII),而不使用任何值 需要在 裝置前景。
舉例來說,使用者在前景執行您的代僱駕駛服務應用程式,並說出或打字: 「幫我叫車到山景城」;您的應用程式會使用這個項目 將目的地欄位設為山景城這樣當使用者說出 輸入「幫我叫車是 SFO 叫車」,應用程式即可設定上車服務 並保留應用程式的狀態
限制
前景應用程式叫用功能僅適用於下列 BII:
actions.intent.CREATE_MONEY_TRANSFER
actions.intent.CREATE_TAXI_RESERVATION
actions.intent.OPEN_APP_FEATURE
actions.intent.ORDER_MENU_ITEM
actions.intent.PAUSE_EXERCISE
actions.intent.RECORD_EXERCISE
actions.intent.RECORD_FOOD_OBSERVATION
actions.intent.RESUME_EXERCISE
actions.intent.START_EXERCISE
actions.intent.STOP_EXERCISE
取得語言代碼支援,以及與前景應用程式叫用相關的查詢範例 ,請參閱內建意圖參考資料。
支援前景應用程式叫用
新增前景應用程式叫用支援功能時,必須新增執行要求 根據所需前景活動調整行為如果該活動出現在 前景並叫用應用程式動作,則 Google 助理會傳遞深層連結意圖 並加上該活動的額外標記,以便應用程式更新狀態。
如要針對 BII 實作前景應用程式叫用,請按照下列步驟操作:
- 在
shortcuts.xml
檔案中,為 BII 新增<intent>
標記 您想要支援前景應用程式叫用的<capability>
。 - 在
<intent>
標記中加入<extra>
標記。 - 在
<extra>
標記中,將android:key
設為"requiredForegroundActivity"
。 然後將android:value
設為需要您應用程式 在前景執行指定不含任何類別的活動 縮寫,請使用應用程式套件名稱,後接正斜線 (/), 後面加上活動名稱:APP_PACKAGE_NAME/ACTIVITY_NAME
- 在您為
"requiredForegroundActivity"
指定的前景活動中, 實作onNewIntent()
方法,處理深層連結意圖: 已設定SINGLE_TOP
旗標。Google 助理透過 當指定活動於前景時,將此標記做為執行要求。 - 將
onNewIntent()
呼叫視為前景活動的更新。 使用從深層連結擷取的參數來管理該活動的狀態。
如果您的應用程式會使用路由器活動,讓所有外部深層連結都觸發 單一隔離路由器活動 處理路由器活動。
範例
以下 shortcuts.xml
範例檔案中的程式碼片段說明如何新增
requiredForegroundActivity
屬性:
<capability name="actions.intent.CREATE_TAXI_RESERVATION"> <!-- Trigger with foreground app invocation if MainActivity is in the foreground. --> <intent android:targetClass="com.example.app.MainActivity" android:targetPackage="com.example.app"> <parameter android:name="taxiReservation.dropoffLocation.name" android:key="dropoff" /> <extra android:key="requiredForegroundActivity" android:value="com.example.app/com.example.app.MainActivity" /> </intent> <!-- This won't trigger if MainActivity is in the foreground. --> <intent android:targetClass="com.example.app.MainActivity" android:targetPackage="com.example.app"> <parameter android:name="taxiReservation.dropoffLocation.name" android:key="dropoff" /> </intent> </capability>
使用者權限
![在裝置設定中,使用者必須啟用「使用畫面中的文字」
,前景應用程式叫用可正常運作](https://developer.android.com/static/guide/app-actions/images/device-setting-assist-screen.png?authuser=9&hl=zh-tw)
如要讓前景應用程式叫用功能為使用者運作,必須具有 「使用畫面中的文字」裝置設定已啟用。位置和確切名稱 這項設定可能會因原始設備製造商 (OEM) 或裝置製造商而異。舉例來說, 裝置設定可能會在使用者的裝置上稱為「使用畫面內容」 裝置。
如要在 Pixel 手機上套用這項 Android 設定,請先前往「設定」應用程式 > 應用程式與 通知 >預設應用程式 >小幫手應用程式。然後,在「小幫手和語音」 輸入畫面,然後啟用使用畫面中的文字。
測試叫用
如要嘗試執行前景應用程式叫用,請按照下列步驟操作:
- 按照「使用者權限」部分中的操作說明啟用 「使用畫面中的文字」裝置設定。
- 開啟應用程式,前往您列為必要前景活動的活動。
- 新聞與按住主畫面按鈕,即可在目前畫面重疊顯示 Google 助理 應用程式。提供與您實作的 BII 相應的查詢 但未提及應用程式名稱本身驗證成功後,您的應用程式就會更新 相關內容,並維持狀態,無須重新啟動 該活動。
處理路由器活動
有些應用程式會使用單一隔離路由器處理所有外部深層連結 活動。路由器活動隨後會啟動適當的商業邏輯 並傳回商業邏輯 將活動移到前景
觸發深層連結可能會導致路由器活動新增到頂端 位於前景活動上方的工作堆疊適用於使用路由器的應用程式 那麼您必須先確定路由器活動會傳遞已傳送的意圖 切換至目前的前景活動例項。如何達成 這項規定會因路由器活動開始的位置而異。
如果你的路由器啟動與商業邏輯活動相同的工作堆疊,
使用 SINGLE_TOP
、CLEAR_TOP
、
和 NEW_TASK
:
Kotlin
Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
Java
Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
路由器從商業邏輯在個別工作堆疊中啟動
活動,將含有 SINGLE_TOP
標記的意圖轉送給商家
也就是邏輯活動