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 in-line, em uma linha de sugestões ou semelhante, em vez de em um menu suspenso 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, as sugestões são ocultadas do IME até que o usuário selecione uma. Os IMEs e gerenciadores de senhas precisam ser atualizados para usar esse recurso. Se um IME ou um gerenciador de senhas não for compatível com o preenchimento automático in-line, as sugestões serão mostradas em um menu suspenso, como acontecia antes do Android 11.
Fluxo de trabalho
Para entender como o preenchimento automático in-line funciona, é útil analisar o processo. Nesse fluxo, o IME é o teclado atual ou outro editor de entrada e o provedor de sugestões é o provedor adequado dessa 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 se concentra em um campo de entrada que aciona o preenchimento automático, como um campo de entrada de senha ou de cartão de crédito.
A plataforma consulta o IME atual e o provedor de sugestões adequado para verificar se eles são compatíveis com o preenchimento automático in-line. Se o IME ou o provedor de sugestões não forem compatíveis com o preenchimento automático in-line, a sugestão será exibida em um menu suspenso, 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 de sugestão especifica o número máximo de sugestões que o IME quer e também fornece especificações de apresentação para cada sugestão. As especificações de apresentação indicam 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
View
que 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
View
de 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 escolher uma das sugestões, o IME será informado da mesma maneira que teria sido se o usuário tivesse escolhido uma sugestão em uma lista suspensa.
As seções a seguir descrevem como configurar o IME ou o gerenciador de senhas para que seja compatível com o preenchimento automático in-line.
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 in-line, o padrão da plataforma será exibir sugestões de preenchimento automático em um menu suspenso.
Seu 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 precisar de uma sugestão de preenchimento automático, ela chamará o método
InputMethodService.onCreateInlineSuggestionsRequest()
do IME. É preciso implementar esse método. Retorne um
InlineSuggestionsRequest
especificando o seguinte:
- Quantas sugestões seu IME quer
Um
InlinePresentationSpec
para cada sugestão, definindo como a sugestão será apresentada
Quando a plataforma tiver sugestões, ela chamará o método
onInlineSuggestionsResponse()
do IME, passando uma
InlineSuggestionsResponse
com as sugestões. É preciso implementar esse método. Sua implementação
chama
InlineSuggestionsResponse.getInlineSuggestions()
para acessar a lista de sugestões, em seguida infla 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 gerenciador de senhas para que seja compatível com o preenchimento automático in-line. Se o app não for compatível com o preenchimento automático in-line, o padrão da plataforma será mostrar as sugestões de preenchimento automático em um menu suspenso.
Seu gerenciador de senhas precisa definir o atributo supportsInlinedSuggestions
como
true
:
<autofill-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsInlineSuggestions="true"/>
Quando o IME precisar de sugestões de preenchimento automático, a plataforma chamará o método
onFillRequest()
do serviço de preenchimento automático, como fazia antes do Android 11. No entanto, seu serviço
precisa chamar o método
getInlineSuggestionsRequest()
do objeto FillRequest
transmitido para receber o
InlineSuggestionsRequest
criado pelo IME. O InlineSuggestionsRequest
especifica quantas sugestões
in-line são necessárias e como cada uma será exibida. Se o IME não
for compatível com sugestões in-line, o método retornará null
.
Seu serviço de preenchimento automático cria objetos
InlinePresentation
até o número máximo solicitado no InlineSuggestionsRequest
.
Suas apresentações precisam obedecer às restrições de tamanho especificadas pelo
InlineSuggestionsRequest
. Para retornar suas sugestões ao IME, chame
Dataset.Builder.setValue()
uma vez para cada sugestão. O Android 11 oferece novas versões do
Dataset.Builder.setValue()
para oferecer compatibilidade com sugestões in-line.
Observação: embora o IME deva usar as sugestões fornecidas pelo seu serviço, não há garantia de que ele fará isso.