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ć je w menu systemowym. Te sugestie autouzupełniania mogą zawierać dane prywatne, takie jak hasła czy informacje o karcie kredytowej, dlatego są ukryte przed edytorem IME, dopóki użytkownik nie wybierze jednej z nich. Aby korzystać z tej funkcji, zaktualizuj metody wprowadzania i usługi autouzupełniania, takie jak menedżery haseł. Jeśli edytor IME lub usługa autouzupełniania nie obsługuje autouzupełniania w tekście, sugestie są wyświetlane w menu, tak jak w wersjach starszych niż Android 11.
Przepływ pracy
W tym procesie IME oznacza bieżącą klawiaturę lub inny edytor metod 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.
Użytkownik skupia się na polu do wprowadzania danych, które aktywuje autouzupełnianie, np. na polu do wprowadzania hasła lub karty kredytowej.
Platforma wysyła zapytanie do bieżącego edytora IME i odpowiedniego dostawcy sugestii, aby sprawdzić, czy obsługują one autouzupełnianie w tekście. Jeśli metoda 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.
Platforma prosi edytor IME o podanie prośby o sugestię. To żądanie sugestii 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 metody IME.
Platforma prosi dostawcę sugestii o podanie maksymalnie żądanej liczby sugestii. Każda sugestia zawiera wywołanie zwrotne, które wypełnia obiekt
Viewzawierający interfejs sugestii.Platforma informuje edytor IME, że sugestie są gotowe. Edytor IME wyświetla sugestie, wywołując metodę wywołania zwrotnego, aby rozwinąć
Viewkażdej sugestii. Aby chronić informacje prywatne użytkownika, edytor IME nie widzi, jakie sugestie są wyświetlane na tym etapie.Jeśli użytkownik wybierze jedną z sugestii, edytor IME zostanie poinformowany w taki sam sposób, jakby użytkownik wybrał sugestię z menu systemowego.
W sekcjach poniżej opisano, jak skonfigurować edytor IME lub usługę autouzupełniania, aby obsługiwały autouzupełnianie w tekście.
Konfigurowanie edytorów IME pod kątem obsługi autouzupełniania w tekście
W tej sekcji opisano, jak skonfigurować edytor IME, aby obsługiwał autouzupełnianie w tekście. Jeśli edytor 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ę InputMethodService.onCreateInlineSuggestionsRequest() metody IME. Musisz zaimplementować tę metodę. Zwróć obiekt InlineSuggestionsRequest, który zawiera te informacje:
- Liczba sugestii, których potrzebuje edytor IME.
**
InlinePresentationSpecdla każdej sugestii, który określa, jak sugestia musi być prezentowana.
Gdy platforma ma sugestie, wywołuje metodę onInlineSuggestionsResponse() edytora IME, przekazując obiekt InlineSuggestionsResponse zawierający sugestie. Musisz zaimplementować tę metodę. W swojej implementacji wywołaj metodę InlineSuggestionsResponse.getInlineSuggestions(), aby uzyskać listę sugestii, a następnie rozwiń każdą sugestię, wywołując jej metodę InlineSuggestion.inflate().
Konfigurowanie usług autouzupełniania pod kątem obsługi autouzupełniania w treści
W tej sekcji opisano, jak skonfigurować usługę autouzupełniania, aby obsługiwała autouzupełnianie w trybie inline. Jeśli aplikacja nie obsługuje autouzupełniania wbudowanego, 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 IME potrzebuje 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ć metodę getInlineSuggestionsRequest() przekazanego obiektu FillRequest. Spowoduje to pobranie elementu InlineSuggestionsRequest utworzonego przez edytor IME. Atrybut InlineSuggestionsRequest określa, ile sugestii w tekście jest potrzebnych i jak każda z nich ma być prezentowana. Jeśli edytor IME nie obsługuje sugestii w tekście, metoda zwraca wartość null.
Usługa autouzupełniania tworzy obiekty InlinePresentation do maksymalnej liczby określonej w parametrze InlineSuggestionsRequest. Prezentacje muszą być zgodne z ograniczeniami rozmiaru określonymi przez InlineSuggestionsRequest. Aby zwrócić sugestie do edytora IME, wywołaj Dataset.Builder.setValue() raz dla każdej sugestii. Android 11 udostępnia wersje Dataset.Builder.setValue(), które obsługują sugestie wbudowane.