Cómo integrar el autocompletado con los IME y servicios de autocompletado

A partir de Android 11, los teclados y otros editores de métodos de entrada (IMEs) pueden mostrar sugerencias de autocompletado intercaladas, en una tira de sugerencias o en algo similar, en lugar de que el sistema las muestre en un menú. Dado que estas sugerencias de autocompletado pueden contener datos privados, como contraseñas o información de tarjetas de crédito, se ocultan del IME hasta que el usuario selecciona una. Actualiza los IME y los servicios de autocompletado, como los administradores de contraseñas, para aprovechan esta función. Si un IME o un servicio de autocompletado no son compatibles con el intercalado autocompletar, las sugerencias se muestran en un menú, como en las versiones anteriores a Android 11

Flujo de trabajo

En este flujo, IME hace referencia al teclado actual o a otro editor de entrada. proveedor de sugerencias se refiere al proveedor adecuado de la sugerencia de autocompletado. Según el campo de entrada y la configuración del usuario, el proveedor de sugerencias puede ser la plataforma o un servicio de autocompletado.

  1. El usuario se enfoca en un campo de entrada que activa el autocompletado, como un campo de contraseña o de entrada de la tarjeta de crédito.

  2. La plataforma consulta el IME actual y el proveedor de sugerencias correspondiente para ver si admiten el autocompletado intercalado. Si el IME o el proveedor de sugerencias no lo admiten, la sugerencia se muestra en un menú, como en Android 10 y versiones anteriores.

  3. La plataforma le pide al IME que proporcione una solicitud de sugerencia. Esta solicitud de sugerencia especifica la cantidad máxima de sugerencias que se mostrarán y también proporciona especificaciones de presentación para cada sugerencia. Las especificaciones de la presentación especificar elementos como el tamaño máximo, el tamaño del texto, los colores y los datos de la fuente, lo que permite el proveedor de sugerencias debe coincidir con la apariencia del IME.

  4. La plataforma le pide al proveedor de sugerencias que brinde una cantidad de sugerencias hasta el número solicitado. Cada sugerencia incluye una devolución de llamada para aumentar una View que contiene la IU de la sugerencia.

  5. La plataforma informa al IME que las sugerencias están listas. El IME muestra las sugerencias llamando al método de devolución de llamada para aumentar la View de cada sugerencia. Para proteger la información privada del usuario, el IME no ve cuáles son las sugerencias en esta etapa.

  6. Si el usuario selecciona una de las sugerencias, se informa al IME de la misma manera que si el usuario elige una sugerencia de un menú del sistema.

En las siguientes secciones, se describe cómo configurar el IME o el servicio de autocompletado para que admitan la función de autocompletado intercalado.

Cómo configurar los IME para que admitan el autocompletado intercalado

En esta sección, se describe cómo configurar tu IME para que admita el autocompletado. Si tu IME no admite el autocompletado intercalado, la plataforma muestra de forma predeterminada sugerencias de autocompletado en un menú.

Tu IME debe establecer el atributo supportsInlinedSuggestions en true:

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

Cuando la plataforma necesita una sugerencia de autocompletado, llama al método InputMethodService.onCreateInlineSuggestionsRequest() de tu IME. Debes implementar este método. Muestra un elemento InlineSuggestionsRequest que especifica lo siguiente:

  • Cuántas sugerencias quiere tu IME.
  • Un InlinePresentationSpec para cada sugerencia, que define cómo se debe presentar.

Cuando la plataforma tiene sugerencias, llama al método onInlineSuggestionsResponse() de tu IME y pasa una InlineSuggestionsResponse que contenga las sugerencias. Debes implementar este método. En tu implementación, llama a InlineSuggestionsResponse.getInlineSuggestions() para obtener la lista de sugerencias y, luego, aumenta cada sugerencia llamando a su método InlineSuggestion.inflate().

Cómo configurar servicios de autocompletado para que admitan el autocompletado intercalado

En esta sección, se describe cómo configurar tu servicio de autocompletado para que sea compatible autocompletar. Si tu app no admite el autocompletado intercalado, la plataforma usa de forma predeterminada que muestra las sugerencias de Autocompletar en un menú.

Tu servicio de autocompletado debe establecer el atributo supportsInlinedSuggestions en true:

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

Cuando el IME necesita sugerencias de Autocompletar, la plataforma llama a tu función del servicio onFillRequest() del mismo modo que en las versiones anteriores a Android 11. Sin embargo, tu servicio debe llamar al método getInlineSuggestionsRequest() del objeto FillRequest pasado para obtener el InlineSuggestionsRequest creado por el IME. El InlineSuggestionsRequest especifica cuántas sugerencias intercaladas se necesitan y cómo debe presentarse cada uno. Si el IME no admite sugerencias intercaladas, el método muestra null.

Tu servicio de autocompletado crea objetos InlinePresentation hasta la cantidad máxima solicitada en InlineSuggestionsRequest. Tus presentaciones deben cumplir con las restricciones de tamaño que especifica InlineSuggestionsRequest. Para mostrar tus sugerencias al IME, llama a Dataset.Builder.setValue() una vez por cada sugerencia. Android 11 proporciona versiones de Dataset.Builder.setValue() para admitir sugerencias intercaladas.