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.
Workflow
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 wejściowym, 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
View
zawierającego interfejs sugestii.Platforma informuje IME, że sugestie są gotowe. Edytor IME wyświetla sugestie, wywołując metodę wywołania zwrotnego, aby rozwinąć
View
każ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 wbudowane.
Konfigurowanie edytorów IME do obsługi autouzupełniania w treści
W tej sekcji opisujemy, jak skonfigurować 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.
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 potrzebuje sugestii autouzupełniania, wywołuje metodę InputMethodService.onCreateInlineSuggestionsRequest()
InputMethodService.onCreateInlineSuggestionsRequest()
edytora IME. Musisz zaimplementować tę metodę. Zwróć obiekt InlineSuggestionsRequest
, podając te informacje:
- Ile sugestii ma wyświetlać edytor IME.
W przypadku każdej sugestii podaj
InlinePresentationSpec
, określając sposób jej prezentacji.
Gdy platforma ma sugestie, wywołuje metodę onInlineSuggestionsResponse()
InlineSuggestionsResponse
zawierającą 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 starszych niż Android 11. Jednak usługa musi wywołać metodę getInlineSuggestionsRequest()
obiektu FillRequest
przekazanego do niej, aby uzyskać obiekt InlineSuggestionsRequest
utworzony przez IME. Parametr
InlineSuggestionsRequest
określa, ile sugestii wstawianych ma być wyświetlanych i w jaki sposób. Jeśli edytor IME nie obsługuje sugestii w tekście, metoda zwraca wartość null
.
Usługa autouzupełniania tworzy obiekty InlinePresentation
, aż do maksymalnej liczby żądanej w InlineSuggestionsRequest
.
Prezentacje muszą spełniać ograniczenia rozmiaru określone przez InlineSuggestionsRequest
. Aby zwrócić sugestie do edytora IME, wywołaj funkcję
Dataset.Builder.setValue()
dla każdej sugestii. Android 11 udostępnia wersje Dataset.Builder.setValue()
, które obsługują sugestie wstawiane.