A estrutura de preenchimento automático do Android O finalmente resolverá um problema de atraso de longa data com gerenciadores de senhas

O novo Autofill Framework no Android O resolverá um problema de atraso de longa data associado aos serviços de acessibilidade dos gerenciadores de senhas.

Já se passou um mês desde que o Google lançou o primeira prévia do desenvolvedor Android O (o tempo voa rápido!), e como acontece com qualquer nova versão do Android - há muito o que explorar. Nós publicamos muitos artigos já falamos sobre o Android O, mas há um recurso que sinto que ainda não recebeu a atenção que merece: o Estrutura de preenchimento automático.

Preenchimento automático no Android O

Os gerenciadores de senhas custam muito hoje em dia (embora estejamos parcial ao KeePass de código aberto), mas é apenas com o Android O que o Google realmente oferece suporte oficial a gerenciadores de senhas. Com o Android O, aplicativos de terceiros podem preencher o serviço de preenchimento automático, que se comunica com os aplicativos por meio do novo Autofill Framework. Aplicativos que usam padrão Visualizar elementos funcionarão com o Autofill Framework pronto para uso, embora existam etapas adicionais que os desenvolvedores podem seguir para 

otimizar para preenchimento automático para garantir que qualquer uma das visualizações personalizadas do aplicativo possa ser preenchida automaticamente.

Quando uma visualização autopreenchível entra em foco, o Autofill Framework invocará uma solicitação de preenchimento automático. O serviço de preenchimento automático responde enviando de volta determinados conjuntos de dados de preenchimento automático (como nome de usuário, senha, endereço, números de cartão de crédito, etc.) que o usuário pode selecionar. O serviço de preenchimento automático é especificado pelo usuário em Configurações -> Aplicativos e notificações -> Aplicativos padrão -> Aplicativo de preenchimento automático.

Aplicativo de preenchimento automático no Android O. Créditos: Última passagem.

A explicação do novo Autofill Framework acima é apenas um breve resumo do que está acontecendo tanto no aplicativo solicitante quanto no final do serviço de preenchimento automático. O que é mais importante para sua compreensão aqui não são os detalhes exatos de como o preenchimento automático funciona no Android O, mas o fato de que o Os próprios aplicativos gerenciadores de senhas não detectam mais quando uma visualização pode ser preenchida automaticamente.


Leitura recomendada: AgileBits mostra como será a estrutura de preenchimento automático do Android O


Preenchimento automático antes do Android O

Compare isso com o modo como o preenchimento automático funcionava antes do Android O. Antes que os gerenciadores de senhas tivessem qualquer tipo de método oficial para detectar quando uma Visualização poderia ser preenchida automaticamente, cada O aplicativo teve que implementar um serviço de acessibilidade para verificar a visualização atual e encontrar o preenchimento automático Campos.

A utilização de um Serviço de Acessibilidade, no entanto, pode resultar em um atraso considerável sob certas condições. O atraso associado ao serviço de acessibilidade do seu gerenciador de senhas típico, porém, é tão aparente que serviços populares como o LastPass ainda têm páginas de suporte sobre o assunto. Essas páginas de suporte normalmente informam que seu único recurso para lidar com atrasos excessivos causados ​​por O Serviço de Acessibilidade consiste em desabilitar o Serviço de Acessibilidade ou passar a usar sua própria entrada personalizada método. De qualquer forma, você perde qualquer tipo de capacidade de preenchimento automático.

Mas por que exatamente o Serviço de Acessibilidade do LastPass, ou o Serviço de Acessibilidade de qualquer outro gerenciador de senhas, parece causar tanto atraso? O motivo é como esses gerenciadores de senhas precisam utilizar os Serviços de Acessibilidade para detectar campos de entrada. Um serviço de acessibilidade atributos são definidos em um Arquivo de recursos XML dentro do APK, para que possamos ver como o serviço funciona descompilando o arquivo APK.

Abaixo está o arquivo de recursos retirado da descompilação do APK LastPass:


"@string/accessibility_service_description"
android: accessibilityEventTypes="typeViewFocused|typeWindowContentChanged"
android: accessibilityFeedbackType="feedbackGeneric"
android: notificationTimeout="200"
android: accessibilityFlags="flagReportViewIds"
android: canRetrieveWindowContent="true"
android: canRequestEnhancedWebAccessibility="true"
xmlns: andro />

A partir disso, podemos obter as seguintes informações: O Serviço de Acessibilidade do LastPass solicita dois tipos de eventos para monitorar - TYPE_VIEW_FOCUSED e TYPE_WINDOW_CONTENT_CHANGED. Ele faz isso porque precisa saber quando o conteúdo de um aplicativo/página da web muda ou entra em foco e, em seguida, recupera o conteúdo da janela atual para procurar quaisquer campos de entrada de senha. Mas como o serviço faz isso constantemente em dois eventos de acessibilidade que disparam com extrema frequência, isso resulta em atraso. Para uma discussão mais aprofundada sobre como os Serviços de Acessibilidade podem causar atrasos, remeto-me ao meu artigo anterior sobre o assunto.


Leitura recomendada: "Working as Intended" - Uma exploração do atraso de acessibilidade do Android


Android O mata dois coelhos com uma cajadada só

Antes do Android O, não havia muito que os desenvolvedores de gerenciadores de senhas pudessem fazer para mitigar esse atraso. Isso ocorre porque os gerenciadores de senhas não tinham como saber quando um campo de entrada preenchível automaticamente estava na tela sem permitir que um Serviço de Acessibilidade os monitorasse constantemente. Mas graças ao novo Autofill Framework no Android O, esses gerenciadores de senhas agora podem aposentar seus serviços de acessibilidade. Em vez disso, os próprios aplicativos que precisam de entrada de dados solicitarão que o Autofill Framework chame o serviço de preenchimento automático que enviará os dados. Graças a esta nova estrutura, a entrada de senhas não só se tornará muito mais fácil para os usuários, como eles não precisarão mais depender de um método de entrada adicional, mas o atraso associado à ativação dos Serviços de Acessibilidade dos gerenciadores de senhas será uma coisa do passado.

Sei que para alguns de vocês esse fato pode não ser inovador, mas pensei que, como a discussão em torno do Serviço de Acessibilidade era tão silenciosa, talvez valesse a pena reavivar esse tópico. Apenas um pouco de reflexão neste fim de semana!


O que você acha do novo Autofill Framework do Android O? Deixe-nos saber nos comentários abaixo!