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 w tekście, na pasku podpowiedzi lub w podobny sposób, zamiast wyświetlać sugestie w menu systemowym. Ponieważ te sugestie autouzupełniania mogą zawierać dane prywatne, takie jak hasła lub informacje o kartach kredytowych, są one ukryte przed IME, dopóki użytkownik nie wybierze jednej z nich. Zaktualizuj edytory IME i usługi autouzupełniania, takie jak menedżery haseł, aby korzystać z tej funkcji. Jeśli IME lub usługa autouzupełniania nie obsługuje autouzupełniania w tekście, sugestie są wyświetlane w menu, tak jak w wersjach wcześniejszych niż Android 11.

Przepływ pracy

W tym przepływie 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 skupia się na polu do wprowadzania danych, które wywołuje autouzupełnianie, np. na polu do wprowadzania danych hasła lub karty kredytowej.

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

  3. Platforma prosi IME o podanie prośby o sugestię. Ta prośba o sugestię określa maksymalną liczbę sugestii do wyświetlenia, a także zawiera specyfikacje prezentacji dla każdej sugestii. Specyfikacje prezentacji określają takie elementy jak maksymalny rozmiar, rozmiar tekstu, kolory i dane czcionki, dzięki czemu dostawca sugestii może dopasować wygląd i działanie do IME.

  4. Platforma prosi dostawcę sugestii o podanie maksymalnie żądanej liczby sugestii. Każda sugestia zawiera wywołanie zwrotne, które służy do rozszerzenia 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, aby rozszerzyć element View każdej sugestii. Aby chronić prywatne informacje użytkownika, IME nie widzi, jakie są sugestie na tym etapie.

  6. Jeśli użytkownik wybierze jedną z sugestii, IME zostanie o tym poinformowany w taki sam sposób, jakby użytkownik wybrał sugestię z menu systemowego.

W kolejnych sekcjach opisujemy, jak skonfigurować IME lub usługę autouzupełniania, aby obsługiwały autouzupełnianie w tekście.

Konfigurowanie IME do obsługi autouzupełniania w tekście

W tej sekcji opisujemy, jak skonfigurować IME do obsługi autouzupełniania w tekście. Jeśli IME nie obsługuje autouzupełniania w tekście, platforma domyślnie wyświetla sugestie autouzupełniania w menu.

IME musi ustawić atrybut supportsInlinedSuggestions na true:

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

Gdy platforma potrzebuje sugestii autouzupełniania, wywołuje metodę IME InputMethodService.onCreateInlineSuggestionsRequest(). Musisz zaimplementować tę metodę. Zwróć InlineSuggestionsRequest, określając te elementy:

  • Liczba sugestii , które ma wyświetlać IME.
  • **An InlinePresentationSpec dla każdej sugestii, która określa, jak sugestia ma być prezentowana.

Gdy platforma ma sugestie, wywołuje metodę IME onInlineSuggestionsResponse(), przekazując InlineSuggestionsResponse zawierający sugestie. Musisz zaimplementować tę metodę. W implementacji wywołaj InlineSuggestionsResponse.getInlineSuggestions(), aby pobrać listę sugestii, a następnie rozszerz każdą sugestię, wywołując jej metodę InlineSuggestion.inflate().

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

W tej sekcji opisujemy, jak skonfigurować usługę autouzupełniania do obsługi autouzupełniania w tekście. Jeśli aplikacja nie obsługuje autouzupełniania w tekście, 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 IME potrzebuje sugestii autouzupełniania, platforma wywołuje metodę onFillRequest() usługi autouzupełniania, tak jak w wersjach wcześniejszych niż Android 11. Usługa musi jednak wywołać metodę getInlineSuggestionsRequest() przekazanego FillRequest obiektu. Spowoduje to pobranie InlineSuggestionsRequest utworzonego przez IME. InlineSuggestionsRequest określa, ile sugestii w tekście jest potrzebnych i jak każda z nich ma być prezentowana. Jeśli IME nie obsługuje sugestii w tekście, metoda zwraca wartość null.

Usługa autouzupełniania tworzy InlinePresentation obiekty w maksymalnej liczbie żądanej w InlineSuggestionsRequest. Prezentacje muszą być zgodne z ograniczeniami rozmiaru określonymi w InlineSuggestionsRequest. Aby zwró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.