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

Od Androida 11 klawiatury i inne edytory metod wprowadzania (IME) mogą wyświetlać sugestie autouzupełniania bezpośrednio w tekście, na pasku sugestii lub w podobny sposób zamiast systemu wyświetlającego sugestie w menu. Sugestie autouzupełniania mogą zawierać dane prywatne, takie jak hasła czy dane kart kredytowych, dlatego są one ukryte w IME, dopóki użytkownik ich nie wybierze. Aby korzystać z tej funkcji, zaktualizuj edytory IME i usługi autouzupełniania, np. menedżery haseł. Jeśli edytor IME lub usługa autouzupełniania nie obsługują wbudowanego autouzupełniania, sugestie są wyświetlane w menu, tak jak w wersjach starszych niż Android 11.

Workflow

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

  1. Użytkownik przechodzi do pola do wprowadzania danych, które uruchamia autouzupełnianie, np. pola do wprowadzania hasła lub danych karty kredytowej.

  2. Platforma wysyła zapytanie do bieżącego IME i odpowiedniego dostawcy sugestii, aby sprawdzić, czy obsługuje on wbudowane autouzupełnianie. Jeśli edytor lub dostawca sugestii nie obsługuje wbudowanego autouzupełniania, sugestia pojawi się w menu, tak jak na Androidzie 10 i starszych.

  3. Platforma prosi IME o przesłanie prośby o sugestie. To żądanie sugestii określa maksymalną liczbę sugestii do wyświetlenia oraz zawiera specyfikacje prezentacji dla każdej z nich. Specyfikacje prezentacji określają takie parametry jak maksymalny rozmiar, rozmiar tekstu, kolory i dane czcionki, dzięki czemu dostawca sugestii może dopasować wygląd i styl edytora IME.

  4. Platforma prosi dostawcę sugestii o dostarczenie maksymalnie wymaganej liczby sugestii. Każda sugestia zawiera wywołanie zwrotne, które ma pomóc w pominięciu elementu View zawierającego interfejs sugestii.

  5. Platforma informuje IME, że sugestie są gotowe. IME wyświetla sugestie, wywołując metodę wywołania zwrotnego w celu zawyżenia wartości View każdej sugestii. Aby chronić prywatne informacje użytkownika, edytor IME nie widzi sugestii na tym etapie.

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

W kolejnych sekcjach opisano, jak skonfigurować usługę IME lub usługę autouzupełniania, aby umożliwić korzystanie z wbudowanego autouzupełniania.

Konfigurowanie IME do obsługi wbudowanego autouzupełniania

W tej sekcji opisaliśmy, jak skonfigurować edytor IME pod kątem obsługi autouzupełniania w tekście. Jeśli Twój edytor IME nie obsługuje wbudowanego autouzupełniania, platforma domyślnie wyświetla sugestie autouzupełniania w menu.

Twój edytor IME musi ustawić atrybut supportsInlinedSuggestions na true:

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

Gdy platforma wymaga sugestii autouzupełniania, wywołuje metodę InputMethodService.onCreateInlineSuggestionsRequest() Twojego edytora IME. Musisz wdrożyć tę metodę. Zwróć InlineSuggestionsRequest z podanymi tymi informacjami:

  • Liczba sugestii, które chce uzyskać Twój edytor IME.
  • Atrybut InlinePresentationSpec dla każdej sugestii określający sposób jej prezentowania.

Gdy platforma ma sugestie, wywołuje metodę onInlineSuggestionsResponse() Twojego edytora IME, przekazując kod InlineSuggestionsResponse z sugestiami. Musisz wdrożyć tę metodę. W ramach implementacji wywołaj metodę InlineSuggestionsResponse.getInlineSuggestions(), aby uzyskać listę sugestii, a następnie pomiń każdą z nich, wywołując jej metodę InlineSuggestion.inflate().

Konfigurowanie usług autouzupełniania do obsługi wbudowanego autouzupełniania

W tej sekcji opisaliśmy, jak skonfigurować usługę autouzupełniania, aby obsługiwała wbudowane autouzupełnianie. Jeśli Twoja aplikacja nie obsługuje autouzupełniania wbudowanego autouzupełniania, platforma domyślnie wyświetla sugestie autouzupeł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 edytor wymaga sugestii autouzupełniania, platforma wywołuje metodę onFillRequest() usługi autouzupełniania, tak jak w wersjach starszych niż Android 11. Usługa musi jednak wywołać przekazaną metodę getInlineSuggestionsRequest() obiektu FillRequest, aby pobrać InlineSuggestionsRequest utworzony przez IME. Pole InlineSuggestionsRequest określa, ile sugestii w tekście potrzebuje i w jaki sposób mają być przedstawiane. Jeśli edytor IME nie obsługuje wbudowanych sugestii, metoda zwraca wartość null.

Usługa autouzupełniania tworzy obiekty InlinePresentation do maksymalnej liczby żądań określonej w InlineSuggestionsRequest. Twoje prezentacje muszą być zgodne z ograniczeniami rozmiaru określonymi w dokumencie InlineSuggestionsRequest. Aby przywrócić sugestie do IME, wywołaj Dataset.Builder.setValue() raz dla każdej sugestii. Android 11 udostępnia wersje Dataset.Builder.setValue() do obsługi sugestii w tekście.