Integracja autouzupełniania z edytorami IME i usługami autouzupełniania

Począwszy od Androida 11, klawiatury i inne edytory metod wprowadzania (IME) mogą wyświetlać sugestie autouzupełniania w tekście, na pasku sugestii lub do wyświetlania podobnych treści. Od te sugestie autouzupełniania mogą zawierać prywatne dane, takie jak hasła, informacji o karcie kredytowej, sugestie są ukryte w edytorze IME do momentu, wybierze jedną z nich. Zaktualizuj edytory IME i usługi autouzupełniania, np. menedżery haseł, na jak korzystać z tej funkcji. Jeśli edytor IME lub usługa autouzupełniania nie obsługuje tekstu wbudowanego autouzupełniania, 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 – odpowiedniego dostawcę 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.

  1. Użytkownik skupia się na polu wprowadzania danych, które powoduje automatyczne wypełnianie, np. na polu wprowadzania hasła lub danych karty kredytowej.

  2. Platforma wysyła zapytanie do bieżącego IME i odpowiedniego dostawcy sugestii aby sprawdzić, czy obsługują one autouzupełnianie. Jeśli edytor IME lub dostawca sugestii nie obsługuje autouzupełniania wbudowanego, jest wyświetlana sugestia w menu, na przykład na Androidzie 10 i starszych.

  3. 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.

  4. Platforma prosi dostawcę sugestii o podanie maksymalnej liczby sugestii. Każda sugestia zawiera wywołanie zwrotne w celu zwiększenia Element View zawierający interfejs sugestii.

  5. Platforma informuje edytor IME, że sugestie są gotowe. Wyświetli się edytor IME. sugestii, wywołując metodę wywołania zwrotnego w celu zwiększenia liczby sugestii View Aby chronić prywatne informacje użytkownika, IME nie widzi. na tym etapie.

  6. 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 edytorów IME pod kątem obsługi autouzupełniania w tekście

Z tej sekcji dowiesz się, jak skonfigurować edytor IME pod kątem obsługi autouzupełniania wbudowanego. Jeśli 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 edytor IME. InputMethodService.onCreateInlineSuggestionsRequest() . Musisz wdrożyć tę metodę. Zwrot InlineSuggestionsRequest określając następujące elementy:

  • Liczba sugestii, które chce uzyskać edytor IME.
  • InlinePresentationSpecw przypadku każdej sugestii, określający sposób jej wyświetlania.

Gdy platforma ma sugestie, wywołuje edytor IME. onInlineSuggestionsResponse() , który wymaga przesłania InlineSuggestionsResponse zawierający sugestie. Musisz zaimplementować tę metodę. W wdrożenie, wywołanie InlineSuggestionsResponse.getInlineSuggestions() aby uzyskać listę sugestii, a następnie rozwijaj każdą z nich, wywołując InlineSuggestion.inflate() .

Konfigurowanie usług autouzupełniania pod kątem obsługi autouzupełniania wbudowanego

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 edytor IME potrzebuje sugestii autouzupełniania, platforma wywołuje autouzupełnianie usługi onFillRequest() tak samo jak w wersjach Androida starszych niż 11. Jednak Twoja usługa musi wywołać metodę getInlineSuggestionsRequest() przekazanego obiektu FillRequest, aby uzyskać obiekt InlineSuggestionsRequest utworzony przez IME. InlineSuggestionsRequest określa liczbę potrzebnych sugestii w tekście. jak każda z nich powinna być prezentowana. Jeśli edytor IME nie obsługuje sugestii wbudowanych, metoda zwraca null.

Usługa autouzupełniania tworzy InlinePresentationobiekty, 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(), aby obsługiwać wbudowane sugestie.