Mit App Actions können Nutzer mit Google Assistant sprechen und direkt zu bestimmten App-Zielen wechseln, wenn sie zum Beispiel sagen: „Hey Google, bestell mir eine Fahrt in der Beispiel-App.“ Durch das Aufrufen von Apps im Vordergrund kannst du die Nutzung weiter verbessern, wenn ein Nutzer deine App bereits geöffnet hat.
Durch das Aufrufen von Apps im Vordergrund können integrierte Intents (BIIs) abgeglichen werden, ohne dass der App-Name erwähnt werden muss, während eine bestimmte Aktivität im Vordergrund des Geräts ausgeführt wird.
Angenommen, ein Nutzer hat Ihre Mitfahrdienst-App im Vordergrund angezeigt und sagt oder gibt "Bestell mir eine Fahrt nach Mountain View" an Google Assistant. Ihre Anwendung verwendet diese Eingabe, um das Zielfeld auf Mountain View festzulegen. Wenn der Nutzer dann „Order me a Ride from SFO“ (Bestelle mir eine Fahrt ab SFO) sagt oder eingibt, kann die App den Abholort festlegen und gleichzeitig den Status der App beibehalten.
Einschränkungen
Der Aufruf von Apps im Vordergrund ist nur für die folgenden BIIs verfügbar:
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
Informationen zur Sprachunterstützung und Beispielabfragen in Bezug auf den Aufruf von Apps im Vordergrund für eine bestimmte BII finden Sie in der Referenz zum integrierten Intent.
Aufrufe von Apps im Vordergrund unterstützen
Wenn Sie den Aufruf von Apps im Vordergrund unterstützen möchten, müssen Sie ein Auftragsausführungsverhalten basierend auf der gewünschten Aktivität im Vordergrund hinzufügen. Wenn sich diese Aktivität im Vordergrund befindet und die App-Aktion aufgerufen wird, übergibt Assistant den Deeplink-Intent mit einem zusätzlichen Flag an diese Aktivität, damit der Status Ihrer App aktualisiert werden kann.
So implementieren Sie den Aufruf einer App im Vordergrund für eine BII:
- Füge in der Datei
shortcuts.xml
ein<intent>
-Tag zu der BII-<capability>
hinzu, die das Aufrufen von Apps im Vordergrund unterstützen soll. - Füge innerhalb des
<intent>
-Tags ein<extra>
-Tag hinzu. - Legen Sie im
<extra>
-Tagandroid:key
auf"requiredForegroundActivity"
und fürandroid:value
die Aktivität fest, die im Vordergrund ausgeführt werden soll. Geben Sie die Aktivität ohne Klassenabkürzungen an. Verwenden Sie dazu den Namen Ihres App-Pakets, gefolgt von einem Schrägstrich (/) und dem Namen der Aktivität:APP_PACKAGE_NAME/ACTIVITY_NAME
- Implementieren Sie bei der Vordergrundaktivität, die Sie für
"requiredForegroundActivity"
angegeben haben, die MethodeonNewIntent()
, um einen Deeplink-Intent zu verarbeiten, wobei das FlagSINGLE_TOP
festgelegt ist. Assistant übergibt den Deeplink-Intent mit diesem Flag als Auftragsausführung, wenn die angegebene Aktivität im Vordergrund ausgeführt wird. - Behandeln Sie
onNewIntent()
-Aufrufe als Aktualisierung Ihrer Aktivität im Vordergrund und verwalten Sie den Status in dieser Aktivität mithilfe von Parametern, die aus dem Deeplink extrahiert wurden.
Wenn Ihre App eine Routeraktivität verwendet, damit alle externen Deeplinks eine einzelne Gatekeeping-Routeraktivität auslösen, lesen Sie Routeraktivitäten verarbeiten.
Beispiel
Das folgende Snippet aus einer Beispieldatei shortcuts.xml
zeigt, wie das Attribut requiredForegroundActivity
hinzugefügt wird:
<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>
Nutzerberechtigungen
![In den Geräteeinstellungen müssen Nutzer „Text auf Bildschirm verwenden“ aktivieren, damit der App-Aufruf im Vordergrund funktioniert.](https://developer.android.com/static/guide/app-actions/images/device-setting-assist-screen.png?authuser=6&hl=de)
Damit ein Nutzer eine App im Vordergrund aufrufen kann, muss er die Geräteeinstellung Text auf Bildschirm verwenden aktiviert haben. Der Ort und der genaue Name dieser Einstellung können je nach OEM oder Gerätehersteller variieren. Beispielsweise kann die Geräteeinstellung auf dem Gerät eines Nutzers stattdessen Bildschirmkontext verwenden genannt werden.
Um diese Android-Einstellung auf einem Pixel aufzurufen, rufen Sie zuerst Einstellungen > Apps & Benachrichtigungen > Standard-Apps > Assistenten-App auf. Aktivieren Sie dann auf dem Bildschirm Assistent und Spracheingabe die Option Text auf Bildschirm verwenden.
Aufruf testen
So testen Sie den Aufruf Ihrer App im Vordergrund:
- Folgen Sie der Anleitung im Abschnitt Nutzerberechtigungen, um die Geräteeinstellung Text auf Bildschirm verwenden zu aktivieren.
- Öffnen Sie die App und rufen Sie die Aktivität auf, die Sie als erforderliche Aktivität im Vordergrund angegeben haben.
- Halten Sie die Startbildschirmtaste gedrückt, um Assistant als Overlay in der aktuellen App zu öffnen. Geben Sie eine Abfrage ein, die der von Ihnen implementierten BII entspricht, ohne den App-Namen selbst zu erwähnen. Wenn der Vorgang erfolgreich ist, wird Ihre Anwendung automatisch anhand Ihrer Abfrage aktualisiert. Dabei wird der Status beibehalten, ohne dass die Aktivität neu gestartet wird.
Routeraktivitäten verarbeiten
Einige Apps verarbeiten alle externen Deeplinks über eine einzige Gatekeeping-Router-Aktivität. Die Routeraktivität startet dann die entsprechende Geschäftslogikaktivität (nach allen Prüfungen und Validierungen) und gibt die Geschäftslogikaktivität in den Vordergrund zurück.
Das Auslösen eines Deeplinks kann dazu führen, dass die Routeraktivität im Aufgabenstack oben über der Aktivität im Vordergrund angezeigt wird. Bei Apps, die eine Routeraktivität verwenden, muss die Routeraktivität den Intent liefern, der von Google Assistant an die aktuelle Instanz der Aktivität im Vordergrund gesendet wurde. Wie Sie diese Anforderung erfüllen, hängt davon ab, wo die Routeraktivität beginnt.
Wenn Ihr Router im selben Aufgabenstack wie Ihre Geschäftslogikaktivität startet, leiten Sie den Intent mit dem bitweisen OR von SINGLE_TOP
, CLEAR_TOP
und NEW_TASK
weiter:
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
Wenn Ihr Router in einem separaten Aufgabenstack von Ihrer Geschäftslogikaktivität startet, leiten Sie den Intent stattdessen mit dem Flag SINGLE_TOP
an die Geschäftslogikaktivität weiter.