J'ai vu AccountManager dans le SDK Android et il est utilisé pour stocker les informations de compte. Par conséquent, je ne trouve aucune discussion générale sur son objectif. Quelqu'un est-il au courant de discussions utiles? Quel est l'objectif de AccountManager et ce qu'il vous achète? Des avis sur le type de comptes auquel il convient? C’est là que vous placeriez les informations de compte de votre utilisateur pour un service Web général?
Cette question est un peu ancienne, mais je pense qu’elle est toujours d’un bon intérêt.
AccountManager
, SyncAdapter
et ContentProvider
go vont ensemble.
SyncAdapter
sans un Account
dans le AccountManager
.SyncAdapter
sans un ContentProvider
.Mais tu peux:
ContentProvider
sans les autres.AccountManager
sans les autres (mais vous vous ne pouvez pas utiliser un AccountManager
sans le SyncAdapter
avant Android 2.2/Froyo API 8)Avec AccountManager
/SyncAdapter
/ContentProvider
:
AccountManager
donne aux utilisateurs un point central (Paramètres> Comptes) pour définir leurs informations d'identificationSyncAdapter
. Cela peut être utile pour optimiser la batterie (par exemple, aucune synchronisation n'est effectuée lorsque le réseau est en panne)ContentProvider
est un moyen pratique de partager des données entre applications Remarque: il existe autres méthodes de communication interprocessus sous Android .ContentProvider
planifie l'accès à la base de données dans un thread en arrière-planAsyncQueryHanlder
permet d'interroger le ContentProvider
dans un thread en arrière-plan, empêchant ainsi les erreurs ANR (Application Not Responsive) sans vous obliger à gérer explicitement le thread.ContentProvider
est lié à l'observateur de ContentResolver
: cela signifie qu'il est facile de notifier les vues lorsque le contenu est modifié Ligne de fond : le cadre AccountManager
/SyncAdapter
/ContentProvider
vous aide si vous souhaitez synchroniser des données à partir d'une ressource Web. Fake/ implémentations Dumb sont requis sur l’API 7. Aussi
AsyncTaskLoader
Enfin, si vous utilisez SyncAdapter
, envisagez sérieusement Firebase Cloud Messaging (anciennement Google Cloud Messaging), également appelé "Notifications push", pour disposer de mises à jour plus récentes et d'une utilisation optimisée de la batterie.
La classe AccountManager est intégrée à vos comptes téléphoniques. Donc, si vous suivez tous les guides et que vous le faites fonctionner correctement, vous verrez vos comptes dans le menu "Paramètres-> comptes et synchronisation". De là, vous pouvez les personnaliser ou même les supprimer. De plus, accountManager dispose d'un cache des tickets d'authentification pour vos comptes. Ceci peut être utilisé aussi si vous ne prévoyez pas de synchroniser votre compte (pour autant que je sache).
Si vous ne souhaitez pas que vos comptes apparaissent dans ce menu, vous ne devez pas utiliser AccountManager et stocker les données des comptes ailleurs (peut-être dans les préférences partagées). http://developer.Android.com/guide/topics /data/data-storage.html
De http://www.c99.org/2010/01/23/writing-an-Android-sync-provider-part-1/ :
Le premier élément du puzzle est appelé un authentificateur de compte, qui définit l’apparence du compte de l’utilisateur dans les paramètres "Comptes et synchronisation". L'implémentation d'un authentificateur de compte nécessite 3 éléments: un service qui renvoie une sous-classe de AbstractAccountAuthenticator à partir de la méthode onBind, une activité pour Demander à l'utilisateur de saisir ses informations d'identification et un fichier xml décrivant l'apparence que devrait avoir votre compte lorsqu'il est affiché à l'utilisateur. Vous devrez également ajouter l’autorisation Android.permission.AUTHENTICATE_ACCOUNTS à votre AndroidManifest.xml.
Le AccountManager
est bon pour les raisons suivantes:
Accounts
, car vous pouvez facilement le gérer dans votre application sans avoir besoin de cette jolie chose Accounts
….Accounts
est de supprimer l'autorisation traditionnelle avec nom d'utilisateur et mot de passe chaque fois qu'une fonctionnalité autorisée est demandée par l'utilisateur, car l'authentification a lieu en arrière-plan et l'utilisateur est invité à entrer son mot de passe. seulement dans certaines conditions, que j'y reviendrai plus tard.Accounts
dans Android) vous évite également de définir votre propre type de compte. Vous avez probablement rencontré les applications utilisant des comptes Google à des fins d'autorisation, ce qui vous évite bien des tâches un nouveau compte et en mémorisant ses informations d'identification pour l'utilisateur.Accounts
peut être ajouté indépendamment via Paramètres → ComptesAccounts
. Par exemple, le client peut accéder au contenu protégé en même temps dans son appareil et son PC Android), sans qu'il soit nécessaire de se connecter régulièrement.Accounts
dans Android) est de séparer les deux parties impliquées dans toute activité dépendante de Accounts
, appelé ainsi authentificateur et ressource. propriétaire, sans compromettre les informations d'identification du client (utilisateur). Les termes peuvent sembler plutôt vagues, mais n'abandonnez pas avant d'avoir lu le paragraphe suivant… ????Laissez-moi élaborer sur ce dernier avec un exemple d'application de streaming vidéo. La société A est titulaire d’une activité de streaming vidéo en vertu d’un contrat avec la société B afin de fournir à certains de ses membres des services de streaming premium. La société B utilise une méthode de nom d'utilisateur et de mot de passe pour reconnaître son utilisateur. Pour que la société A reconnaisse les membres premium de B, une solution consiste à en obtenir la liste à partir de B et à utiliser un mécanisme similaire de correspondance nom d'utilisateur/mot de passe. De cette façon, l'authentificateur et le propriétaire de la ressource sont les mêmes (société A). Hormis l'obligation pour les utilisateurs de se souvenir d'un deuxième mot de passe, il est fort probable qu'ils aient défini le même mot de passe que le profil de leur entreprise B pour utiliser les services de A. Ceci n'est évidemment pas favorable.
Pour pallier les inconvénients ci-dessus, OAuth a été introduit. En tant que norme ouverte pour l'autorisation, dans l'exemple ci-dessus, OAuth exige que l'autorisation soit effectuée par la société B (authentificateur) en émettant un jeton appelé jeton d'accès pour les utilisateurs éligibles (tiers), puis en fournissant à l'entreprise A (propriétaire de la ressource) le jeton, donc pas de jeton signifie pas d'éligibilité.
J'ai développé plus sur ceci et plus sur AccountManager
sur mon site Web ici.