Integrar o preenchimento automático com IMEs e serviços de preenchimento automático

A partir do Android 11, teclados e outros Editores de método de entrada (IMEs, na sigla em inglês) podem exibir sugestões de preenchimento automático inline, em uma faixa de sugestões ou algo semelhante, em vez de o sistema exibir sugestões em um menu. 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 delas. 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 oferecer suporte ao preenchimento automático in-line, as sugestões vão ser mostradas em um menu, como em versões anteriores ao Android 11.

Fluxo de trabalho

Nesse fluxo, IME significa o teclado atual ou outro editor de entrada, e o 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.

  1. 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.

  2. A plataforma consulta o IME atual e o provedor de sugestões adequado para conferir se eles oferecem suporte ao preenchimento automático inline. Se o IME ou o provedor de sugestões não oferecer suporte ao preenchimento automático inline, a sugestão vai ser mostrada em um menu, como no Android 10 e versões anteriores.

  3. 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 a serem exibidas e também fornece especificações de apresentação para cada sugestão. As especificações da apresentação especificam itens como tamanho máximo, tamanho de texto, cores e dados de fonte, permitindo que o provedor de sugestões corresponda à aparência do IME.

  4. 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.

  5. 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ê quais são as sugestões nessa fase.

  6. Se o usuário selecionar uma das sugestões, o IME será informado da mesma forma como se o usuário escolhesse uma sugestão em um menu do sistema.

As seções abaixo descrevem como configurar seu IME ou 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 oferecer suporte ao preenchimento automático in-line, a plataforma vai mostrar sugestões de preenchimento automático em um menu por padrão.

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 deseja.
  • Um InlinePresentationSpec para cada sugestão, definindo como ela precisa 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. Na implementação, chame InlineSuggestionsResponse.getInlineSuggestions() para acessar 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 in-line. Se o app não oferecer suporte ao preenchimento automático in-line, o padrão da plataforma será mostrar as sugestões de preenchimento automático em um menu.

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 precisar de sugestões de preenchimento automático, a plataforma chamará o método onFillRequest() do serviço de preenchimento automático, assim como nas versões anteriores ao 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 precisa ser apresentada. Se o IME não oferecer suporte a sugestões inline, 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 versões de Dataset.Builder.setValue() para oferecer suporte a sugestões in-line.