Od Androida 11 klawiatury i inne edytory metod wprowadzania (IME) mogą wyświetlać sugestie autouzupełniania w linii, na pasku sugestii lub w podobny sposób, zamiast wyświetlać je 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 edytorem 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 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 wcześniejszych niż Android 11.
Przepływ pracy
W tym procesie IME oznacza bieżącą klawiaturę lub inny edytor wprowadzania tekstu, a dostawca sugestii oznacza odpowiedniego dostawcę sugestii autouzupełniania. W zależności od pola wprowadzania i ustawień użytkownika dostawcą sugestii może być platforma lub usługa autouzupełniania.
Użytkownik skupia się na polu, które wywołuje autouzupełnianie, np. na polu hasła lub karty kredytowej.
Platforma wysyła zapytanie do bieżącego edytora IME i odpowiedniego dostawcy sugestii, aby sprawdzić, czy obsługują oni autouzupełnianie w tekście. Jeśli edytor IME lub dostawca sugestii nie obsługuje autouzupełniania w tekście, sugestia jest wyświetlana w menu, tak jak na Androidzie 10 i starszych wersjach.
Platforma prosi edytor IME o przesłanie 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 IME.
Platforma prosi dostawcę sugestii o podanie maksymalnie żądanej liczby sugestii. Każda sugestia zawiera wywołanie zwrotne, które powoduje rozszerzenie elementu
Viewzawierającego 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ć prywatne informacje użytkownika, IME nie widzi na tym etapie sugestii.Jeśli użytkownik wybierze jedną z sugestii, IME zostanie o tym poinformowany w taki sam sposób, jak w przypadku wybrania sugestii z menu systemowego.
W sekcjach poniżej znajdziesz informacje o tym, jak skonfigurować edytor IME lub usługę autouzupełniania, aby obsługiwały autouzupełnianie w tekście.
Konfigurowanie edytorów IME do obsługi autouzupełniania w treści
W tej sekcji opisano, jak skonfigurować edytor IME, aby obsługiwał automatyczne wypeł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.
Edytor 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() edytora IME. Musisz zaimplementować tę metodę. Zwróć InlineSuggestionsRequest, podając te informacje:
- Liczba sugestii, których oczekuje edytor IME.
**
InlinePresentationSpecdla każdej sugestii, która określa, jak należy ją przedstawić.
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 do obsługi autouzupełniania w tekście
W tej sekcji opisujemy, jak skonfigurować usługę autouzupełniania, aby obsługiwała autouzupełnianie w tekście. Jeśli aplikacja nie obsługuje automatycznego wypełniania w tekście, platforma 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 wcześniejszych niż Android 11. Usługa musi jednak wywoływać metodę getInlineSuggestionsRequest() przekazanego obiektu FillRequest. Ta funkcja pobiera InlineSuggestionsRequest utworzone przez IME. Element
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, maksymalnie do liczby podanej w parametrze InlineSuggestionsRequest. Prezentacje muszą spełniać ograniczenia rozmiaru określone przez InlineSuggestionsRequest. Aby zwrócić sugestie do edytora 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 wstawiane.