Para que devo usar o AccountManager Android?

Eu vi o AccountManager no Android SDK e que ele é usado para armazenar informações de conta. Assim, não encontro qualquer discussão geral sobre o que se pretende. Alguém sabe de alguma discussão útil sobre qual é a intenção por trás do AccountManager e o que ele lhe compra? Alguma opinião de que tipo de contas isto é adequado? Seria aqui que você colocaria as informações da conta do seu usuário para um serviço web geral?

Author: JJD, 2010-04-27

4 answers

Esta pergunta é um pouco velha, mas acho que ainda é de bom interesse.

AccountManager, SyncAdapter e ContentProvidervão juntos.

Mas podes:

Com AccountManager / SyncAdapter / ContentProvider:

  • AccountManager dá aos utilizadores um ponto central (configuração > contas) para definir as suas credenciais
  • o Android decide quando a sincronização pode ser feita via SyncAdapter. Isso pode ser bom para otimizar a bateria (nenhuma sincronização é feita quando a rede está em baixo, por exemplo)
  • ContentProvider é uma forma conveniente de partilhar dados entre aplicações Nota: existem outros métodos de comunicação entre processos em Andróide.
  • ContentProvider horários de acesso ao banco de dados em um segmento de plano de fundo O AsyncQueryHanlder ajuda a consulta a ContentProvider em um segmento de plano de fundo, impedindo a Aplicação Não responde (ANR) erros ao não exigir a manipular explicitamente threading.
  • ContentProvider ligações ao observador de ContentResolver: Isto significa que é fácil notificar as vistas quando o conteúdo é alterado

Conclusão : o enquadramento AccountManager / SyncAdapter / ContentProvider ajuda se quiseres sincronizar os dados de um recurso web. As implementações Fake / Burras são necessárias na API 7. Também

  • Se só quiser armazenar dados, deve considerar um mecanismo mais simples para o armazenamento de dados
  • Se só precisar de obter um único recurso, poderá usar um AsyncTaskLoader
  • Se quiser carregar imagens assíncronamente, pode usar bibliotecas especializadas como Square Picasso
  • Se você só quiser executar algum código em um com o tempo, poderá considerar um serviço / Alarme
  • apenas disponível na API > = 7 (Isto já não interessa)

Finalmente, se utilizar um SyncAdapter, considere seriamente O envio de mensagens na nuvem de Firebase (anteriormente mensagens no Google Cloud) aka "notificações push" para ter actualizações mais recentes e utilização optimizada da bateria.

 92
Author: rds, 2017-05-23 10:31:30

A classe AccountManager está integrada nas suas contas telefónicas. Por isso, se seguir todas as guias e o colocar a funcionar correctamente, verá as suas contas no menu "Configuração->contas e sincronizar". De lá você pode personalizá-los ou até mesmo apagá-los. Além disso, o accountManager tem um cache dos bilhetes de autenticação para suas contas. Isto também pode ser usado se você não planeja sincronizar sua conta (tanto quanto eu sei).

Se não quer que as suas contas apareçam nesse menu, não deverá usar o Gestor de contas e guardar os dados das contas noutro local (talvez nas preferências partilhadas) http://developer.android.com/guide/topics/data/data-storage.html
 20
Author: Gab, 2013-09-23 07:48:33

De http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/:

A primeira peça do puzzle é: chamou um Autenticador de conta, que define como a conta do Utilizador irá aparecer no "Accounts & Sync" definicao. Execução de uma conta O autenticador necessita de 3 peças: a serviço que devolve uma subclasse de AbstractAccountAuthenticator do método onBind, uma actividade para pedir o utilizador a inserir as suas credenciais, e um ficheiro xml que descreve como a conta deverá procurar quando for mostrada para usuario. Você também precisa adicionar o androide.permissao.AUTENTICAR_ contas Permissão para o seu AndroidManifest.xml.
 14
Author: Macarse, 2010-04-27 12:03:53

O {[0] } é bom pelas seguintes razões:

  • primeiro é armazenar vários nomes de contas com diferentes níveis de acesso às funcionalidades do aplicativo sob um único tipo de conta. Por exemplo, em um aplicativo de streaming de vídeo, um pode ter dois nomes de conta: um com acesso demo a um número limitado de vídeos e o outro com acesso a um mês inteiro a todos os vídeos. Esta não é a principal razão para usar Accounts, no entanto, uma vez que você pode facilmente gerenciar isso em seu app sem a necessidade de esta coisa elegante...
  • a outra vantagem de usar Accounts é livrar-se da autorização tradicional com nome de utilizador e senha cada vez que um recurso autorizado é solicitado pelo utilizador, porque a autenticação ocorre em segundo plano e o utilizador só é pedido a sua palavra-passe em determinada condição, o que eu chegarei a ela mais tarde.
  • usar a funcionalidade Accounts no android também remove a necessidade de definir o tipo de conta própria. Você provavelmente veio em todos os aplicativos que usam as contas do Google para autorização, o que poupa o trabalho de fazer uma nova conta e lembrar suas credenciais para o usuário.
  • Accounts pode ser adicionado independentemente através de Configurações → Contas
  • a autorização cruzada do utilizador pode ser facilmente gerida usando Accounts. Por exemplo, o cliente pode acessar o material protegido ao mesmo tempo em seu dispositivo android e PC sem a necessidade de logins recorrentes.
  • Do ponto de vista da segurança, a mesma senha em cada pedido para o servidor permite uma possível escuta em conexões não-seguras. A encriptação de senha não é suficiente aqui para evitar o roubo de senha.
  • finalmente, uma razão importante para usar o recurso Accounts no android é separar as duas partes envolvidas em qualquer negócio dependente de Accounts, o chamado autenticador e proprietário de recursos, sem comprometer as credenciais do cliente (usuário). Os termos podem parecer vagos, mas não desista até que você deve ler-se o seguinte parágrafo ...
Deixe-me elaborar este último com um exemplo de uma aplicação de streaming de vídeo. A companhia A é titular de um negócio de streaming de vídeo em contrato com a Companhia B para fornecer aos seus membros Serviços de streaming premium. A empresa B emprega um utilizador e um método de senha para reconhecer o seu utilizador. Para a empresa a reconhecer os membros premium de B, uma maneira seria obter a lista deles a partir de B e utilizar um nome de usuário / senha semelhante correspondência mecanismo. Desta forma, o autenticador e proprietário de recursos são os mesmos (empresa a). Além da obrigação dos usuários de lembrar uma segunda senha, é muito provável que eles definam a mesma senha que o perfil de sua empresa B para usar os Serviços de A. isso obviamente não é favorável.

Para colmatar as lacunas acima referidas, foi introduzido OAuth. Como um padrão aberto para autorização, no exemplo acima, OAuth exige que a autorização seja feita pela empresa B (autenticador) por emissão de algum token chamado token de Acesso para os usuários elegíveis (terceiros) e, em seguida, fornecer a Empresa A (proprietário de recursos) com o token. Então, nenhum sinal significa nenhuma elegibilidade.

Elaborei mais sobre isto e mais sobre {[[0]} aqui no meu site .

This is a simple app using AccountManager

 3
Author: Ali Nem, 2016-09-25 09:33:32