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 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 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.
El usuario se enfoca en un campo de entrada que activa el autocompletado, como un campo de entrada de contraseña o tarjeta de crédito.
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 admiten el autocompletado intercalado, la sugerencia se muestra en un menú, como en Android 10 y versiones anteriores.
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.
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
Viewque contiene la IU de la sugerencia.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
Viewde cada sugerencia. Para proteger la información privada del usuario, el IME no ve cuáles son las sugerencias en esta etapa.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 tu IME o servicio de autocompletado para que admita el 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 intercalado. 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 de tu IME
InputMethodService.onCreateInlineSuggestionsRequest(). Debes implementar este método. Muestra un InlineSuggestionsRequest que especifique lo
siguiente:
- La cantidad de sugerencias que desea tu IME.
**Un
InlinePresentationSpecpara cada sugerencia, que define cómo se debe presentar la sugerencia.
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 objeto pasado
FillRequest's getInlineSuggestionsRequest() método. Esto recupera el InlineSuggestionsRequest creado por el IME. El 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 InlinePresentation objetos, hasta la
cantidad máxima solicitada en el InlineSuggestionsRequest. Tus presentaciones deben cumplir con las restricciones de tamaño especificadas por el 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.