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.
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.
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.
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.
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
Viewzawierającego interfejs sugestii.Platforma informuje IME, że sugestie są gotowe. IME wyświetla sugestie, wywołując metodę wywołania zwrotnego, aby rozszerzyć element
Viewkażdej sugestii. Aby chronić prywatne informacje użytkownika, IME nie widzi, jakie są sugestie na tym etapie.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
InlinePresentationSpecdla 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.