Интегрируйте автозаполнение с IME и службами автозаполнения.

Начиная с Android 11, клавиатуры и другие редакторы методов ввода ( IME ) могут отображать предложения автозаполнения в строке, в полосе предложений или в чем-то подобном вместо того, чтобы система отображала предложения в меню. Поскольку эти предложения автозаполнения могут содержать конфиденциальные данные, такие как пароли или данные кредитной карты, предложения скрыты от IME, пока пользователь не выберет их. Обновите IME и службы автозаполнения, такие как менеджеры паролей, чтобы использовать эту функцию. Если IME или служба автозаполнения не поддерживают встроенное автозаполнение, предложения отображаются в меню, как в версиях до Android 11 .

Рабочий процесс

В этом потоке IME означает текущую клавиатуру или другой редактор ввода, а поставщик предложений означает соответствующего поставщика предложения автозаполнения. В зависимости от поля ввода и настроек пользователя поставщиком предложений может быть платформа или служба автозаполнения.

  1. Пользователь фокусируется на поле ввода, которое запускает автозаполнение, например, поле ввода пароля или номера кредитной карты.

  2. Платформа запрашивает текущий IME и соответствующего поставщика предложений, чтобы узнать, поддерживают ли они встроенное автозаполнение. Если IME или поставщик предложений не поддерживают встроенное автозаполнение, предложение отображается в меню, как на Android 10 и ниже.

  3. Платформа просит IME предоставить запрос на предложение . Этот запрос на предложение определяет максимальное количество отображаемых предложений, а также предоставляет спецификации представления для каждого предложения. Спецификации представления определяют такие вещи, как максимальный размер, размер текста, цвета и данные шрифта, позволяя поставщику предложений соответствовать внешнему виду и настроению IME.

  4. Платформа просит поставщика предложений предоставить запрошенное количество предложений. Каждое предложение включает обратный вызов для наполнения View содержащего пользовательский интерфейс предложения.

  5. Платформа информирует IME о готовности предложений. IME отображает предложения, вызывая метод обратного вызова для увеличения View каждого предложения. Для защиты личной информации пользователя IME не видит, что представляют собой предложения на этом этапе.

  6. Если пользователь выбирает одно из предложений, IME информируется об этом так же, как если бы пользователь выбрал предложение из системного меню.

В следующих разделах описывается, как настроить IME или службу автозаполнения для поддержки встроенного автозаполнения.

Настройте IME для поддержки встроенного автозаполнения

В этом разделе описывается, как настроить IME для поддержки встроенного автозаполнения. Если ваш IME не поддерживает встроенное автозаполнение, платформа по умолчанию отображает предложения автозаполнения в меню.

Ваш IME должен установить атрибут supportsInlinedSuggestions в true :

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Когда платформе требуется предложение автозаполнения, она вызывает метод InputMethodService.onCreateInlineSuggestionsRequest() вашего IME. Вы должны реализовать этот метод. Верните InlineSuggestionsRequest , указав следующее:

  • Сколько предложений требуется вашему редактору метода ввода?
  • InlinePresentationSpec для каждого предложения, определяющий, как предложение должно быть представлено.

Когда платформа имеет предложения, она вызывает метод onInlineSuggestionsResponse() вашего IME, передавая InlineSuggestionsResponse , содержащий предложения. Вы должны реализовать этот метод. В своей реализации вызовите InlineSuggestionsResponse.getInlineSuggestions() чтобы получить список предложений, затем раздуйте каждое предложение, вызвав его метод InlineSuggestion.inflate() .

Настройте службы автозаполнения для поддержки встроенного автозаполнения

В этом разделе описывается, как настроить службу автозаполнения для поддержки встроенного автозаполнения. Если ваше приложение не поддерживает встроенное автозаполнение, платформа по умолчанию отображает предложения по автозаполнению в меню.

Ваша служба автозаполнения должна установить атрибут supportsInlinedSuggestions в значение true :

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Когда IME требуются предложения автозаполнения, платформа вызывает метод onFillRequest() вашей службы автозаполнения, как и в версиях ниже Android 11. Однако ваша служба должна вызвать метод getInlineSuggestionsRequest() переданного объекта FillRequest , чтобы получить InlineSuggestionsRequest , созданный IME. InlineSuggestionsRequest указывает, сколько встроенных предложений необходимо и как каждое из них должно быть представлено. Если IME не поддерживает встроенные предложения, метод возвращает null .

Ваша служба автозаполнения создает объекты InlinePresentation , вплоть до максимального количества, запрошенного в InlineSuggestionsRequest . Ваши презентации должны соответствовать ограничениям размера, указанным в InlineSuggestionsRequest . Чтобы вернуть ваши предложения в IME, вызовите Dataset.Builder.setValue() один раз для каждого предложения. Android 11 предоставляет версии Dataset.Builder.setValue() для поддержки встроенных предложений.

,

Начиная с Android 11, клавиатуры и другие редакторы методов ввода ( IME ) могут отображать предложения автозаполнения в строке, в полосе предложений или в чем-то подобном вместо того, чтобы система отображала предложения в меню. Поскольку эти предложения автозаполнения могут содержать конфиденциальные данные, такие как пароли или данные кредитной карты, предложения скрыты от IME, пока пользователь не выберет их. Обновите IME и службы автозаполнения, такие как менеджеры паролей, чтобы использовать эту функцию. Если IME или служба автозаполнения не поддерживают встроенное автозаполнение, предложения отображаются в меню, как в версиях до Android 11 .

Рабочий процесс

В этом потоке IME означает текущую клавиатуру или другой редактор ввода, а поставщик предложений означает соответствующего поставщика предложения автозаполнения. В зависимости от поля ввода и настроек пользователя поставщиком предложений может быть платформа или служба автозаполнения.

  1. Пользователь фокусируется на поле ввода, которое запускает автозаполнение, например, поле ввода пароля или номера кредитной карты.

  2. Платформа запрашивает текущий IME и соответствующего поставщика предложений, чтобы узнать, поддерживают ли они встроенное автозаполнение. Если IME или поставщик предложений не поддерживают встроенное автозаполнение, предложение отображается в меню, как на Android 10 и ниже.

  3. Платформа просит IME предоставить запрос на предложение . Этот запрос на предложение определяет максимальное количество отображаемых предложений, а также предоставляет спецификации представления для каждого предложения. Спецификации представления определяют такие вещи, как максимальный размер, размер текста, цвета и данные шрифта, позволяя поставщику предложений соответствовать внешнему виду и настроению IME.

  4. Платформа просит поставщика предложений предоставить запрошенное количество предложений. Каждое предложение включает обратный вызов для наполнения View содержащего пользовательский интерфейс предложения.

  5. Платформа информирует IME о готовности предложений. IME отображает предложения, вызывая метод обратного вызова для увеличения View каждого предложения. Для защиты личной информации пользователя IME не видит, что представляют собой предложения на этом этапе.

  6. Если пользователь выбирает одно из предложений, IME информируется об этом так же, как если бы пользователь выбрал предложение из системного меню.

В следующих разделах описывается, как настроить IME или службу автозаполнения для поддержки встроенного автозаполнения.

Настройте IME для поддержки встроенного автозаполнения

В этом разделе описывается, как настроить IME для поддержки встроенного автозаполнения. Если ваш IME не поддерживает встроенное автозаполнение, платформа по умолчанию отображает предложения автозаполнения в меню.

Ваш IME должен установить атрибут supportsInlinedSuggestions в true :

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Когда платформе требуется предложение автозаполнения, она вызывает метод InputMethodService.onCreateInlineSuggestionsRequest() вашего IME. Вы должны реализовать этот метод. Верните InlineSuggestionsRequest , указав следующее:

  • Сколько предложений требуется вашему редактору метода ввода?
  • InlinePresentationSpec для каждого предложения, определяющий, как предложение должно быть представлено.

Когда платформа имеет предложения, она вызывает метод onInlineSuggestionsResponse() вашего IME, передавая InlineSuggestionsResponse , содержащий предложения. Вы должны реализовать этот метод. В своей реализации вызовите InlineSuggestionsResponse.getInlineSuggestions() чтобы получить список предложений, затем раздуйте каждое предложение, вызвав его метод InlineSuggestion.inflate() .

Настройте службы автозаполнения для поддержки встроенного автозаполнения

В этом разделе описывается, как настроить службу автозаполнения для поддержки встроенного автозаполнения. Если ваше приложение не поддерживает встроенное автозаполнение, платформа по умолчанию отображает предложения по автозаполнению в меню.

Ваша служба автозаполнения должна установить атрибут supportsInlinedSuggestions в значение true :

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Когда IME требуются предложения автозаполнения, платформа вызывает метод onFillRequest() вашей службы автозаполнения, как и в версиях ниже Android 11. Однако ваша служба должна вызвать метод getInlineSuggestionsRequest() переданного объекта FillRequest , чтобы получить InlineSuggestionsRequest , созданный IME. InlineSuggestionsRequest указывает, сколько встроенных предложений необходимо и как каждое из них должно быть представлено. Если IME не поддерживает встроенные предложения, метод возвращает null .

Ваша служба автозаполнения создает объекты InlinePresentation , вплоть до максимального количества, запрошенного в InlineSuggestionsRequest . Ваши презентации должны соответствовать ограничениям размера, указанным в InlineSuggestionsRequest . Чтобы вернуть ваши предложения в IME, вызовите Dataset.Builder.setValue() один раз для каждого предложения. Android 11 предоставляет версии Dataset.Builder.setValue() для поддержки встроенных предложений.