Autofill in IMEs und Autofill-Dienste einbinden

Ab Android 11 können Tastaturen und andere Eingabemethoden-Editoren (IMEs) Vorschläge für das automatische Ausfüllen inline, in einer Leiste mit Vorschlägen 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 vor der IME verborgen, bis der Nutzer einen Vorschlag auswählt. Aktualisiere Eingabemethoden und Autofill-Services wie Passwortmanager, um diese Funktion zu nutzen. Wenn eine Eingabemethode oder ein Autofill-Service das automatische Ausfüllen im Text nicht unterstützt, werden Vorschläge wie in Versionen vor Android 11 in einem Menü angezeigt.

Workflow

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

  1. Der Nutzer fokussiert ein Eingabefeld, das Autofill auslöst, z. B. ein Passwort- oder Kreditkarteneingabefeld.

  2. Die Plattform fragt die aktuelle IME und den entsprechenden Vorschlagsanbieter ab, um zu prüfen, ob sie die Inline-Autofill unterstützen. Wenn entweder die Eingabemethode oder der Vorschlagsanbieter das automatische Ausfüllen im Text nicht unterstützt, wird der Vorschlag wie unter Android 10 und niedriger in einem Menü angezeigt.

  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. In den Präsentationsspezifikationen werden Dinge wie maximale Größe, Textgröße, Farben und Schriftartdaten festgelegt, damit der Vorschlagsanbieter das Design der Eingabemethode anpassen kann.

  4. Die Plattform fordert den Vorschlagsanbieter auf, bis zur angeforderten Anzahl von Vorschlägen bereitzustellen. Jeder Vorschlag enthält einen Callback, um ein View mit der Benutzeroberfläche des Vorschlags zu füllen.

  5. Die Plattform informiert die IME, dass Vorschläge verfügbar sind. Die IME zeigt die Vorschläge an, indem sie die Callback-Methode aufruft, um die View der einzelnen Vorschläge zu maximieren. Zum Schutz der privaten Informationen des Nutzers sieht die Eingabemethode in dieser Phase nicht, wie die Vorschläge lauten.

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

In den folgenden Abschnitten wird beschrieben, wie Sie Ihre Eingabemethode oder Ihren Autofill-Service so konfigurieren, dass Inline-Autofill unterstützt wird.

Eingabemethoden für die Unterstützung von Inline-Autofill konfigurieren

In diesem Abschnitt wird beschrieben, wie du deine Eingabemethode so konfigurierst, dass sie die Inline-Autofill-Funktion unterstützt. Wenn dein IME das automatische Ausfüllen im Text nicht unterstützt, werden die Vorschläge für das automatische Ausfüllen standardmäßig in einem Menü angezeigt.

Deine Eingabemethode 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 für das automatische Ausfüllen benötigt, ruft sie die Methode InputMethodService.onCreateInlineSuggestionsRequest() Ihrer Eingabemethode auf. Sie müssen diese Methode implementieren. Geben Sie ein InlineSuggestionsRequest mit folgenden Angaben zurück:

  • Die Anzahl der Vorschläge, die Ihre Eingabemethode benötigt.
  • **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() Ihrer Eingabemethode 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, und rufen Sie dann die Methode InlineSuggestion.inflate() für jeden Vorschlag auf.

Autofill-Services für die Unterstützung von Inline-Autofill konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Ihren Autofill-Service so konfigurieren, dass er Inline-Autofill unterstützt. Wenn deine App das automatische Ausfüllen im Text nicht unterstützt, werden die Vorschläge für das automatische Ausfüllen standardmäßig in einem Menü angezeigt.

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

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

Wenn die Eingabemethode Autofill-Vorschläge benötigt, ruft die Plattform die Methode onFillRequest() des Autofill-Service auf, genau wie in Versionen vor Android 11. Ihr Dienst muss jedoch die Methode getInlineSuggestionsRequest() des übergebenen FillRequest-Objekts aufrufen. Dadurch wird die von der IME erstellte InlineSuggestionsRequest abgerufen. Mit InlineSuggestionsRequest wird angegeben, wie viele Inline-Vorschläge erforderlich sind und wie jeder einzelne dargestellt werden muss. Wenn die Eingabemethode keine Inline-Vorschläge unterstützt, gibt die Methode null zurück.

Ihr Autofill-Service erstellt InlinePresentation-Objekte bis zur maximalen Anzahl, die in der InlineSuggestionsRequest angefordert wurde. Ihre Präsentationen müssen den von InlineSuggestionsRequest angegebenen Größenbeschränkungen entsprechen. Wenn Sie Ihre Vorschläge an die Eingabemethode zurückgeben möchten, rufen Sie Dataset.Builder.setValue() einmal für jeden Vorschlag auf. Android 11 bietet Versionen von Dataset.Builder.setValue(), die Inline-Vorschläge unterstützen.