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 autocompletar, como los administradores de contraseñas, para usar esta función. Si un IME o un servicio de autocompletado no admite el autocompletado intercalado, las sugerencias se muestran en un menú, como en las versiones anteriores a Android 11.

Flujo de trabajo

En este flujo, IME significa el teclado actual u otro editor de entrada, y proveedor de sugerencias significa el proveedor apropiado de la sugerencia de autocompletado. Según el campo de entrada y la configuración del usuario, el proveedor de sugerencias podría 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 adecuado 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 presentación indican aspectos como el tamaño máximo, el tamaño del texto, los colores y los datos de fuente, lo que permite que el proveedor de sugerencias coincida con el aspecto 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 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 desea 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 admita el autocompletado intercalado. Si tu app no admite el autocompletado intercalado, la plataforma muestra de forma predeterminada sus sugerencias de autocompletado 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 autocompletado, la plataforma llama al método onFillRequest() de tu servicio de autocompletado, al igual que en 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. La InlineSuggestionsRequest especifica cuántas sugerencias intercaladas se necesitan y cómo se debe presentar cada una. 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.