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ć dane prywatne, takie jak hasła czy informacje o karcie kredytowej, dlatego są one ukryte w IME, dopóki użytkownik nie wybierze jednej z nich. Zaktualizuj IME i usługi autouzupełniania, takie jak menedżery haseł, aby korzystać z tej funkcji. Jeśli usługa IME lub Autouzupełnianie nie obsługuje Autouzupełniania w tekstach, 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 skupia się na polu wprowadzania danych, które powoduje automatyczne wypełnianie, np. na polu wprowadzania hasła lub danych karty kredytowej.
Platforma wysyła zapytanie do bieżącego IME i odpowiedniego dostawcy sugestii, aby sprawdzić, czy obsługują one autouzupełnianie w ramkach. 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 maksymalnej liczby sugestii. 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 informacje użytkownika, na tym etapie IME nie widzi sugestii.Jeśli użytkownik wybierze jedną z propozycji, IME zostanie poinformowany w taki sam sposób, jak gdyby wybrał propozycję z menu systemowego.
W następnych sekcjach opisaliśmy, jak skonfigurować usługę IME lub autouzupełniania, aby obsługiwała autouzupełnianie w ramce.
Konfigurowanie systemów IME na potrzeby obsługi autouzupełniania w treści
W tej sekcji opisaliśmy, jak skonfigurować IME, aby obsługiwało automatyczne wypełnianie w tekście. Jeśli IME nie obsługuje autouzupełniania w tekście, 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 propozycji chce IME.
InlinePresentationSpec
w przypadku każdej sugestii, określający sposób jej wyświetlania.
Gdy platforma ma sugestie, wywołuje metodę onInlineSuggestionsResponse()
interfejsu IME, przekazując argument
InlineSuggestionsResponse
z sugestiami. Musisz zaimplementować tę metodę. W swojej implementacji wywołaj metodę InlineSuggestionsResponse.getInlineSuggestions()
, aby uzyskać listę sugestii, a potem wypełnij 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
.
Twoja 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 funkcję Dataset.Builder.setValue()
raz dla każdej sugestii. Android 11 udostępnia wersje Dataset.Builder.setValue()
, które obsługują sugestie w tekście.