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

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. Aby korzystać z tej funkcji, zaktualizuj IME i usługi autouzupełniania, takie jak menedżery haseł. 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

IME oznacza bieżącą klawiaturę lub inny edytor wprowadzania. dostawca sugestii oznacza 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 IME lub dostawca sugestii nie obsługuje autouzupełniania w tekstach, sugestia jest wyświetlana w menu, tak jak na Androidzie 10 i starszych.

  3. Platforma prosi edytor IME o przesłanie prośby o sugestię. Ta prośba o propozycje określa maksymalną liczbę wyświetlanych propozycji oraz zawiera specyfikacje wyświetlania dla każdej propozycji. Specyfikacje prezentacji określanie m.in. maksymalnego rozmiaru, rozmiaru tekstu, kolorów i danych czcionek, dzięki czemu pasuje do wyglądu i stylu IME.

  4. Platforma prosi dostawcę sugestii o podanie maks. wiele sugestii. Każda propozycja zawiera wywołanie zwrotne, które powoduje wypełnienie obiektu View zawierającego interfejs użytkownika propozycji.

  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 sekcjach poniżej opisano, jak skonfigurować IME lub usługę autouzupełniania, aby i obsługują autouzupełnianie.

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. Domyślnie na platformie 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 zaimplementować 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 metodę onInlineSuggestionsResponse() interfejsu IME, przekazując parametr InlineSuggestionsResponsez sugestiami. 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 Twoja aplikacja nie obsługuje autouzupełniania wbudowanego, domyślną platformą będzie pokazując jej sugestie autouzupeł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. Twoja usługa musi wywoływać przekazany obiekt FillRequest getInlineSuggestionsRequest() aby uzyskać komponent InlineSuggestionsRequest utworzony przez IME. InlineSuggestionsRequest określa liczbę potrzebnych sugestii w tekście. jak każda z nich powinna być prezentowana. Jeśli IME nie obsługuje sugestii w tekście, metoda zwraca null.

Usługa autouzupełniania tworzy InlinePresentationobiekty, aż do maksymalnej liczby określonej w InlineSuggestionsRequest. Twoje prezentacje muszą spełniać ograniczenia rozmiaru określone w 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.