Todo mundo gosta de ser lembrado. Uma das coisas mais simples e eficazes que você pode fazer para tornar seu app mais agradável é lembrar quem é seu usuário, especialmente quando ele faz upgrade para um novo dispositivo ou começa a carregar um tablet e um smartphone. Mas como você sabe quem é seu usuário? E como reconhecê-los em um novo dispositivo?
Para muitos aplicativos, a resposta são as APIs AccountManager
. Com a
permissão do usuário, você pode usar o gerente de contas para buscar os nomes de contas
que o usuário armazenou no dispositivo.
A integração com as contas do usuário permite que você faça várias coisas, como:
- Preencha automaticamente formulários com o endereço de e-mail do usuário.
- Recupere um ID vinculado a um usuário, não a um dispositivo.
Determinar se o AccountManager é para você
Normalmente, os aplicativos tentam se lembrar do usuário usando uma destas três técnicas:
- Peça para o usuário digitar um nome de usuário.
- Recuperar um código do dispositivo exclusivo para se lembrar do dispositivo.
- Recuperar uma conta integrada do
AccountManager
.
A opção (1) é problemática. Primeiro, pedir para o usuário inserir algo antes de usar o app automaticamente torna o app menos atraente. Em segundo lugar, não há garantia de que o nome de usuário escolhido seja único.
A opção (2) é menos onerosa para o usuário, mas é complicada acertar (link em inglês). Mais importante, ele só permite que você se lembre do usuário em um dispositivo. Imagine a frustração de alguém que faz upgrade para um dispositivo novo e descobre que seu app não se lembra mais dele.
A opção (3) é a técnica preferida. O gerente de contas permite receber informações sobre as contas armazenadas no dispositivo do usuário. O gerente de contas permite que você se lembre do seu usuário, independentemente do número de dispositivos que ele tenha, adicionando apenas alguns toques extras à interface.
Decidir que tipo de conta usar
Os dispositivos Android podem armazenar várias contas de vários provedores diferentes.
Ao consultar AccountManager
para nomes de contas, você pode optar por filtrar por tipo de conta. O tipo de conta é uma string que identifica exclusivamente a entidade que emitiu a conta. Por exemplo, as Contas do Google têm o tipo com.google
, enquanto o Twitter usa com.twitter.android.auth.login
.
Solicitar permissão GET_ACCOUNTS
Para ter uma lista de contas no dispositivo, seu app precisa da permissão
GET_ACCOUNTS
. Adicione uma tag <uses-permission>
ao arquivo de manifesto para solicitar
essa permissão:
<manifest ... > <uses-permission android:name="android.permission.GET_ACCOUNTS" /> ... </manifest>
Informar os usuários e solicitar consentimento
Para ver a lista de contas de usuário, chame
getAccounts()
ou
getAccountsByType()
.
No entanto, lembre-se de que a API retorna dados pessoais e sensíveis do usuário e, sempre que
o app acessar, coletar, usar ou compartilhar dados pessoais e sensíveis,
você precisará divulgar esse fato claramente aos usuários. Para apps publicados no Google Play,
as políticas que protegem os dados do usuário exigem que você faça o seguinte:
- Divulgue para o usuário como seu app acessa, coleta, usa ou compartilha dados pessoais e sensíveis. Saiba mais sobre divulgação aceitável e consentimento.
- Forneça uma Política de Privacidade que descreva seu uso desses dados dentro e fora do dispositivo.
Para saber mais, acesse a Política do Google Play sobre dados do usuário.
Consultar o AccountManager para receber uma lista de contas
Depois de decidir em qual tipo de conta você tem interesse, é necessário consultar as contas desse tipo. Consiga uma instância de AccountManager
chamando
AccountManager.get()
.
Em seguida, use essa instância para chamar getAccountsByType()
.
Kotlin
val am: AccountManager = AccountManager.get(this) // "this" references the current Context val accounts: Array<out Account> = am.getAccountsByType("com.google")
Java
AccountManager am = AccountManager.get(this); // "this" references the current Context Account[] accounts = am.getAccountsByType("com.google");
Isso retorna uma matriz de objetos Account
. Se houver mais de um Account
na
matriz, apresente uma caixa de diálogo solicitando que o usuário selecione uma delas.
Usar o objeto de conta para personalizar seu app
O objeto Account
contém
um nome de conta, que, no caso das Contas do Google, é um endereço de e-mail.
É possível usar essas informações de
várias maneiras, incluindo:
- Como sugestões em formulários, para que o usuário não precise inserir informações da conta.
- Como uma chave para seu próprio banco de dados on-line de informações de uso e personalização.
Decidir se um nome de conta é o suficiente
Um nome de conta é uma boa maneira de se lembrar do usuário, mas o objeto Account
por si só não protege seus dados nem dá acesso a nada além do
nome da conta do usuário. Se o app
precisar permitir que o usuário fique on-line para acessar dados particulares, você vai precisar de
algo mais forte: a autenticação.
Saiba como se autenticar em serviços on-line atuais
e como criar um autenticador personalizado para
instalar seus próprios tipos de conta.