A partir do Android 11, teclados e outros IMEs (editores de métodos de entrada, na sigla em inglês) poderão exibir sugestões de preenchimento automático inline, em uma linha de sugestões ou semelhante, em vez de em um menu exibido pelo sistema. Como essas sugestões de preenchimento automático podem conter dados particulares, como senhas ou informações de cartão de crédito, elas ficam ocultas do IME até que o usuário selecione uma. Atualize os IMEs e os serviços de preenchimento automático, como gerenciadores de senhas, para usar esse recurso. Se um IME ou um serviço de preenchimento automático não for compatível com o preenchimento automático inline, as sugestões serão mostradas em um menu, como nas versões anteriores ao Android 11.
Fluxo de trabalho
Nesse fluxo, IME significa o teclado atual ou outro editor de entrada, e provedor de sugestões significa o provedor adequado da sugestão de preenchimento automático. Dependendo do campo de entrada e das configurações do usuário, o provedor de sugestões pode ser a plataforma ou um serviço de preenchimento automático.
O usuário foca em um campo de entrada que aciona o preenchimento automático, como um campo de entrada de senha ou cartão de crédito.
A plataforma consulta o IME atual e o provedor de sugestões adequado para conferir se eles são compatíveis com o preenchimento automático inline. Se o IME ou o provedor de sugestões não for compatível com o preenchimento automático in-line, a sugestão será mostrada em um menu, como no Android 10 e versões anteriores.
A plataforma solicitará que o IME forneça uma solicitação de sugestão. Essa solicitação especifica o número máximo de sugestões a serem exibidas e também fornece especificações de apresentação para cada sugestão. As especificações de apresentação definem itens como tamanho máximo, tamanho do texto, cores e dados de fonte, permitindo que o provedor de sugestões corresponda à aparência do IME.
A plataforma solicitará que o provedor de sugestões forneça sugestões até o número solicitado. Cada sugestão inclui um callback para inflar um
Viewque contém a IU da sugestão.A plataforma informará ao IME que as sugestões estão prontas. O IME exibirá as sugestões chamando o método de callback para inflar o
Viewde cada sugestão. Para proteger as informações particulares do usuário, o IME não vê as sugestões nessa etapa.Se o usuário selecionar uma das sugestões, o IME será informado da mesma forma que se o usuário escolhesse uma sugestão em um menu do sistema.
As seções a seguir descrevem como configurar o IME ou o serviço de preenchimento automático para oferecer suporte ao preenchimento automático inline.
Configurar IMEs para oferecer compatibilidade com o preenchimento automático in-line
Esta seção descreve como configurar seu IME para oferecer compatibilidade com o preenchimento automático in-line. Se o IME não for compatível com o preenchimento automático inline, a plataforma vai mostrar as sugestões em um menu por padrão.
O IME precisa definir o atributo supportsInlinedSuggestions como true:
<input-method
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsInlineSuggestions="true"/>
Quando a plataforma precisa de uma sugestão de preenchimento automático, ela chama o método
InputMethodService.onCreateInlineSuggestionsRequest() do IME. Você precisa
implementar esse método. Retorne um InlineSuggestionsRequest especificando o
seguinte:
- O número de sugestões que o IME quer.
**Um
InlinePresentationSpecpara cada sugestão, que define como ela precisa ser apresentada.
Quando a plataforma tem sugestões, ela chama o método
onInlineSuggestionsResponse() do IME, transmitindo um
InlineSuggestionsResponse que contém as sugestões. Você precisa implementar
esse método. Na sua implementação, chame
InlineSuggestionsResponse.getInlineSuggestions() para receber a lista de
sugestões e, em seguida, infle cada sugestão chamando o método
InlineSuggestion.inflate().
Configurar serviços de preenchimento automático compatíveis com o preenchimento automático in-line
Esta seção descreve como configurar seu serviço de preenchimento automático para oferecer suporte ao preenchimento automático inline. Se o app não for compatível com o preenchimento automático inline, a plataforma vai mostrar as sugestões de preenchimento automático em um menu por padrão.
Seu serviço de preenchimento automático precisa definir o atributo supportsInlinedSuggestions como
true:
<autofill-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsInlineSuggestions="true"/>
Quando o IME precisa de sugestões de preenchimento automático, a plataforma chama o método
onFillRequest() do serviço de preenchimento automático, assim como faz em versões anteriores
ao Android 11. No entanto, seu serviço precisa chamar o método getInlineSuggestionsRequest() do objeto FillRequest transmitido. Isso
recupera o InlineSuggestionsRequest criado pelo IME. O
InlineSuggestionsRequest especifica quantas sugestões inline são necessárias e
como cada uma precisa ser apresentada. Se o IME não oferecer suporte a sugestões inline,
o método vai retornar null.
O serviço de preenchimento automático cria objetos InlinePresentation, até o
número máximo solicitado no InlineSuggestionsRequest. As apresentações
precisam obedecer às restrições de tamanho especificadas pelo InlineSuggestionsRequest. Para
retornar as sugestões ao IME, chame Dataset.Builder.setValue() uma vez
para cada sugestão. O Android 11 oferece versões de
Dataset.Builder.setValue() para oferecer suporte a sugestões inline.