Począwszy od Androida 11, klawiatury i inne edytory metody wprowadzania (IME) mogą wyświetlać sugestie autouzupełniania w polu tekstowym, pasku sugestii lub w innym podobnym miejscu zamiast w menu. Te sugestie autouzupełniania mogą zawierać prywatne dane, takie jak hasła czy informacje o karcie kredytowej, dlatego są ukryte w IME, dopóki użytkownik ich nie wybierze. Zaktualizuj IME i usługi autouzupełniania, takie jak menedżery haseł, aby korzystać z tej funkcji. Jeśli usługa IME lub usługa Autouzupełniania nie obsługuje Autouzupełniania w ramkach, sugestie są wyświetlane w menu, tak jak w wersjach starszych niż Android 11.
Workflow
W tym procesie IME oznacza bieżącą klawiaturę lub inny edytor wprowadzania, a dostawca sugestii to odpowiedni dostawca sugestii autouzupełniania. W zależności od pola tekstowego i ustawień użytkownika dostawcą sugestii może być platforma lub usługa autouzupełniania.
Użytkownik zaznacza pole do wprowadzania danych, które aktywuje autouzupełnianie, np. pole hasła lub karty kredytowej.
Platforma wysyła zapytanie do bieżącego IME i odpowiedniego dostawcy sugestii, aby sprawdzić, czy obsługują one autouzupełnianie w ramach. Jeśli IME lub dostawca sugestii nie obsługuje autouzupełniania w tekstach, sugestia jest wyświetlana w menu, tak jak na Androidzie 10 i starszych.
Platforma prosi IME o przesłanie żądania sugestii. Ta prośba o propozycje określa maksymalną liczbę wyświetlanych propozycji oraz zawiera specyfikacje wyświetlania dla każdej propozycji. Specyfikacje prezentacji określają takie elementy, jak maksymalny rozmiar, rozmiar tekstu, kolory i dane czcionki, umożliwiając dostawcy sugestii dopasowanie wyglądu i działania do IME.
Platforma prosi dostawcę sugestii o podanie ich maksymalnej liczby. Każda propozycja zawiera wywołanie zwrotne, które powoduje wypełnienie obiektu
View
zawierającego interfejs użytkownika propozycji.Platforma informuje IME, że sugestie są gotowe. IME wyświetla sugestie, wywołując metodę wywołania zwrotnego, aby wypełnić dane
View
. Aby chronić prywatne dane użytkownika, IME nie widzi sugestii na tym etapie.Jeśli użytkownik wybierze jedną z sugestii, IME zostanie rozpoznany w taki sam sposób, jak wtedy, gdy wybierze sugestię z menu systemowego.
W następnych sekcjach opisaliśmy, jak skonfigurować usługę IME lub autouzupełniania, aby obsługiwała autouzupełnianie w polu.
Konfigurowanie edytorów IME pod kątem obsługi autouzupełniania w tekście
W tej sekcji opisaliśmy, jak skonfigurować IME, aby obsługiwało automatyczne wypełnianie w tekście. Jeśli edytor IME nie obsługuje autouzupełniania wbudowanego, platforma domyślnie wyświetla sugestie autouzupełniania w menu.
Atrybut IMEI musi mieć wartość supportsInlinedSuggestions
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()
IME. Musisz zaimplementować tę metodę. Zwracaj odpowiedź InlineSuggestionsRequest
, podając:
- Ile sugestii chce IME.
InlinePresentationSpec
dla każdej sugestii określającej sposób jej prezentacji.
Gdy platforma ma sugestie, wywołuje metodę onInlineSuggestionsResponse()
Twojego IME, przekazując wartość InlineSuggestionsResponse
z sugestiami. Musisz zaimplementować tę metodę. W swojej implementacji wywołaj metodę InlineSuggestionsResponse.getInlineSuggestions()
, aby uzyskać listę sugestii, a następnie zwiększaj każdą sugestię, wywołując jej metodę InlineSuggestion.inflate()
.
Konfigurowanie usług autouzupełniania w celu obsługi autouzupełniania w tekście
W tej sekcji opisaliśmy, jak skonfigurować usługę autouzupełniania, aby obsługiwała autouzupełnianie w ramce. Jeśli aplikacja nie obsługuje automatycznego wypełniania w polu, 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 Twoja usługa musi wywołać metodę getInlineSuggestionsRequest()
przekazanego obiektu FillRequest
, aby uzyskać obiekt InlineSuggestionsRequest
utworzony przez IME. InlineSuggestionsRequest
określa, ile sugestii w tekście jest potrzebnych i jak każda z nich powinna być wyświetlana. Jeśli IME nie obsługuje sugestii w tekście, metoda zwraca null
.
Usługa autouzupełniania tworzy InlinePresentation
obiekty, aż do maksymalnej liczby określonej w InlineSuggestionsRequest
.
Prezentacje muszą spełniać ograniczenia dotyczące rozmiaru określone przez 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()
, które obsługują sugestie w tekście.