Integracja autouzupełniania z edytorami IME i usługami autouzupełniania

Począwszy od Androida 11, klawiatury i inne edytory metody wprowadzania (IME) mogą wyświetlać sugestie autouzupełniania w polu tekstowym, pasku sugestii lub w innym podobnym miejscu zamiast w menu. Te sugestie autouzupełniania mogą zawierać dane prywatne, takie jak hasła czy informacje o karcie kredytowej, dlatego są one ukryte w IME, dopóki użytkownik nie wybierze jednej z nich. Zaktualizuj IME i usługi autouzupełniania, takie jak menedżery haseł, aby korzystać z tej funkcji. Jeśli usługa IME lub usługa Autouzupełniania nie obsługuje Autouzupełniania w ramce, sugestie są wyświetlane w menu, tak jak w wersjach starszych niż Android 11.

Workflow

W tym procesie IME oznacza bieżącą klawiaturę lub inny edytor wprowadzania, a dostawca sugestii – odpowiedniego dostawcę sugestii autouzupełniania. W zależności od pola tekstowego i ustawień użytkownika dostawcą sugestii może być platforma lub usługa autouzupełniania.

  1. Użytkownik skupia się na polu wprowadzania danych, które powoduje automatyczne wypełnianie, np. polu hasła lub pola karty kredytowej.

  2. Platforma wysyła zapytanie do bieżącego IME i odpowiedniego dostawcy sugestii, aby sprawdzić, czy obsługują one autouzupełnianie w ramce. Jeśli IME lub dostawca sugestii nie obsługuje autouzupełniania w tekstach, sugestia jest wyświetlana w menu, tak jak na Androidzie 10 i starszych.

  3. Platforma prosi IME o prośbę o sugestie. Ta prośba o propozycje określa maksymalną liczbę wyświetlanych propozycji oraz zawiera specyfikacje wyświetlania dla każdej propozycji. Specyfikacje prezentacji określają takie elementy, jak maksymalny rozmiar, rozmiar tekstu, kolory i dane czcionki, umożliwiając dostawcy sugestii dopasowanie wyglądu i działania do IME.

  4. Platforma prosi dostawcę sugestii o podanie maksymalnej liczby sugestii. Każda propozycja zawiera wywołanie zwrotne, które powoduje wypełnienie obiektu View zawierającego interfejs użytkownika propozycji.

  5. Platforma informuje IME, że sugestie są gotowe. IME wyświetla sugestie, wywołując metodę wywołania zwrotnego, aby wypełnić dane View. Aby chronić prywatne informacje użytkownika, na tym etapie IME nie widzi sugestii.

  6. Jeśli użytkownik wybierze jedną z propozycji, IME zostanie poinformowany w taki sam sposób, jak gdyby wybrał propozycję z menu systemowego.

W następnych sekcjach opisaliśmy, jak skonfigurować usługę IME lub autouzupełniania, aby obsługiwała autouzupełnianie w polu.

Konfigurowanie systemów IME na potrzeby obsługi autouzupełniania w treści

W tej sekcji opisaliśmy, jak skonfigurować IME, aby obsługiwało automatyczne wypełnianie w tekście. Jeśli IME nie obsługuje autouzupełniania w tekście, platforma domyślnie wyświetla sugestie autouzupełniania w menu.

Atrybut IMEI musi mieć wartość supportsInlinedSuggestionstrue:

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

Gdy platforma potrzebuje sugestii autouzupełniania, wywołuje metodę InputMethodService.onCreateInlineSuggestionsRequest() IME. Musisz zaimplementować tę metodę. Zwracaj odpowiedź InlineSuggestionsRequest, podając:

  • Ile sugestii chce IME.
  • InlinePresentationSpecw przypadku każdej sugestii, określający sposób jej wyświetlania.

Gdy platforma ma sugestie, wywołuje metodę onInlineSuggestionsResponse() interfejsu IME, przekazując argument InlineSuggestionsResponse z sugestiami. Musisz zaimplementować tę metodę. W swojej implementacji wywołaj metodę InlineSuggestionsResponse.getInlineSuggestions(), aby uzyskać listę sugestii, a potem wypełnij każdą sugestię, wywołując jej metodę InlineSuggestion.inflate().

Konfigurowanie usług autouzupełniania w celu obsługi autouzupełniania w tekście

W tej sekcji opisaliśmy, jak skonfigurować usługę autouzupełniania, aby obsługiwała autouzupełnianie w ramce. Jeśli aplikacja nie obsługuje automatycznego wypełniania w polu, domyślnie wyświetla sugestie automatycznego wypełniania w menu.

Usługa autouzupełniania musi ustawić atrybut supportsInlinedSuggestions na true:

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

Gdy IME potrzebuje sugestii autouzupełniania, platforma wywołuje metodę onFillRequest() usługi autouzupełniania, tak jak w wersjach starszych niż Android 11. Jednak usługa musi wywołać metodę getInlineSuggestionsRequest() przekazanego obiektu FillRequest, aby uzyskać obiekt InlineSuggestionsRequest utworzony przez IME. InlineSuggestionsRequestokreśla, ile sugestii w tekście jest potrzebnych i jak każda z nich powinna być wyświetlana. Jeśli IME nie obsługuje sugestii w tekście, metoda zwraca null.

Twoja usługa autouzupełniania tworzy InlinePresentationobiekty, aż do maksymalnej liczby określonej w InlineSuggestionsRequest. Prezentacje muszą spełniać ograniczenia dotyczące rozmiaru określone przez InlineSuggestionsRequest. Aby zwrócić sugestie do IME, wywołaj funkcję Dataset.Builder.setValue() raz dla każdej sugestii. Android 11 udostępnia wersje Dataset.Builder.setValue(), które obsługują sugestie w tekście.