Autofill in IMEs und Autofill-Dienste einbinden

Ab Android 11 können Tastaturen und andere Eingabemethoden-Editoren (IMEs) Vorschläge für automatisches Ausfüllen inline, in einer Vorschlagsleiste oder auf ähnliche Weise anzeigen, anstatt dass das System Vorschläge in einem Menü anzeigt. Da diese Vorschläge für die automatische Vervollständigung private Daten wie Passwörter oder Kreditkarteninformationen enthalten können, werden sie für die IME ausgeblendet, bis der Nutzer einen Vorschlag auswählt. Aktualisieren Sie IMEs und Autofill-Dienste wie Passwortmanager, um diese Funktion nutzen zu können. Wenn ein IME oder ein Autofill-Dienst kein Inline-Autofill unterstützt, werden Vorschläge in einem Menü angezeigt, wie in Versionen vor Android 11.

Workflow

In diesem Ablauf bedeutet IME die aktuelle Tastatur oder einen anderen Eingabe-Editor und Vorschlagsanbieter den entsprechenden Anbieter des Autofill-Vorschlags. Je nach Eingabefeld und den Einstellungen des Nutzers kann der Vorschlagsanbieter die Plattform oder ein Autofill-Dienst sein.

  1. Der Nutzer fokussiert ein Eingabefeld, das das automatische Ausfüllen auslöst, z. B. ein Passwort- oder Kreditkarteneingabefeld.

  2. Die Plattform fragt den aktuellen IME und den entsprechenden Vorschlagsanbieter ab, um festzustellen, ob sie Inline-Autofill unterstützen. Wenn entweder die IME oder der Vorschlagsanbieter die Inline-Autofill-Funktion nicht unterstützt, wird der Vorschlag in einem Menü angezeigt, wie bei Android 10 und niedriger.

  3. Die Plattform fordert die IME auf, eine Vorschlagsanfrage zu senden. In dieser Vorschlagsanfrage wird die maximale Anzahl der anzuzeigenden Vorschläge angegeben. Außerdem werden Präsentationsspezifikationen für jeden Vorschlag bereitgestellt. Die Präsentationsspezifikationen geben Dinge wie maximale Größe, Textgröße, Farben und Schriftartdaten an, sodass der Vorschlagsanbieter das Erscheinungsbild der IME anpassen kann.

  4. Die Plattform fordert den Vorschlagsanbieter auf, bis zu der angeforderten Anzahl von Vorschlägen bereitzustellen. Jeder Vorschlag enthält einen Callback zum Einblenden eines View mit der Benutzeroberfläche des Vorschlags.

  5. Die Plattform informiert die IME, dass Vorschläge bereit sind. Die IME zeigt die Vorschläge an, indem sie die Callback-Methode aufruft, um die View jedes Vorschlags zu rendern. Zum Schutz der privaten Daten des Nutzers sieht die IME in dieser Phase nicht, welche Vorschläge angezeigt werden.

  6. Wenn der Nutzer einen der Vorschläge auswählt, wird die IME auf dieselbe Weise informiert, als würde der Nutzer einen Vorschlag aus einem Systemmenü auswählen.

In den folgenden Abschnitten wird beschrieben, wie Sie Ihren IME- oder Autofill-Dienst für die Unterstützung von Inline-Autofill konfigurieren.

IMEs für die Inline-Autofill-Funktion konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Ihre IME für die Inline-Autofill-Funktion konfigurieren. Wenn Ihre IME die Inline-Autofill-Funktion nicht unterstützt, werden Autofill-Vorschläge standardmäßig in einem Menü angezeigt.

Ihre IME muss das Attribut supportsInlinedSuggestions auf true festlegen:

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Wenn die Plattform einen Vorschlag zum automatischen Ausfüllen benötigt, ruft sie die Methode InputMethodService.onCreateInlineSuggestionsRequest() Ihres IME auf. Sie müssen diese Methode implementieren. Gib eine InlineSuggestionsRequest zurück, in der Folgendes angegeben ist:

  • Wie viele Vorschläge die IME haben möchte.
  • Ein InlinePresentationSpec für jeden Vorschlag, der definiert, wie der Vorschlag präsentiert werden muss.

Wenn die Plattform Vorschläge hat, ruft sie die Methode onInlineSuggestionsResponse() Ihres IME auf und übergibt ein InlineSuggestionsResponse mit den Vorschlägen. Sie müssen diese Methode implementieren. Rufen Sie in Ihrer Implementierung InlineSuggestionsResponse.getInlineSuggestions() auf, um die Liste der Vorschläge abzurufen. Rufen Sie dann für jeden Vorschlag die Methode InlineSuggestion.inflate() auf, um ihn zu erweitern.

Autofill-Dienste für die Inline-Autofill-Funktion konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Ihren Autofill-Dienst für die Inline-Autofill-Funktion konfigurieren. Wenn Ihre App die Inline-Autofill-Funktion nicht unterstützt, werden die Autofill-Vorschläge der Plattform standardmäßig in einem Menü angezeigt.

Ihr Autofill-Dienst muss das Attribut supportsInlinedSuggestions auf true setzen:

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Wenn die IME Autofill-Vorschläge benötigt, ruft die Plattform die Methode onFillRequest() Ihres Autofill-Dienstes auf, genau wie in Versionen unter Android 11. Ihr Dienst muss jedoch die Methode getInlineSuggestionsRequest() des übergebenen FillRequest-Objekts aufrufen, um das von der IME erstellte InlineSuggestionsRequest abzurufen. Die InlineSuggestionsRequest gibt an, wie viele Inline-Vorschläge erforderlich sind und wie jeder Vorschlag präsentiert werden muss. Wenn das IME keine Inline-Vorschläge unterstützt, gibt die Methode null zurück.

Ihr Autofill-Dienst erstellt InlinePresentation-Objekte bis zur maximalen Anzahl, die in InlineSuggestionsRequest angefordert wird. Ihre Präsentationen müssen den von der InlineSuggestionsRequest angegebenen Größenbeschränkungen entsprechen. Um Ihre Vorschläge an die IME zurückzugeben, rufen Sie Dataset.Builder.setValue() einmal für jeden Vorschlag auf. Android 11 bietet Versionen von Dataset.Builder.setValue() zur Unterstützung von Inline-Vorschlägen.