41 votes

Adaptateur de synchronisation sans compte

J'ai besoin de récupérer certaines données sur le cloud à partir de mon application. J'ai regardé la google IO vidéo Reposant sur android apps @ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s Il recommande en finale de diapositives utiliser un SyncAdapter pour s'intégrer avec le Système Android.

Plus tard, j'ai appris que l'on doit utiliser un Compte pour mettre en œuvre SyncAdapter. Mon application n'utilise pas un compte. Les utilisateurs peuvent librement télécharger des données sans inscription. Puis-je encore utiliser SyncAdapter? Est-il un stock factice compte que je pourrais utiliser?

Edit: j'ai un fournisseur de contenu pour mon application n'est donc pas un problème

Edit2: je viens de regardé la Météo et bourse des applications dans les Paramètres -> Comptes et Synchronisation. Vous pouvez voir qu'ils permettent la synchronisation, mais n'avez pas de bouton supprimer compte. D'autre part, Google, Facebook et Skype apps permettent la synchronisation de PLUS ils ont un bouton supprimer compte. Cela signifie Météo et bourse, ne pas utiliser de comptes, alors que Google, Facebook et Skype ne.

Les tutoriels que j'ai trouvé @ http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/ et @ http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/ dire qu'il FAUT avoir un compte pour utiliser la Synchronisation de l'Adaptateur. :S ???

18voto

nindalf Points 153

Comme le Développeur Android docs dire

Même si votre application ne pas utiliser de comptes, vous avez encore besoin de fournir un authentificateur composant. Si vous n'utilisez pas de comptes ou de connexion au serveur, les informations traitées par l'authentificateur est ignoré, de sorte que vous pouvez fournir un authentificateur composant qui contient stub les implémentations de méthode. Vous devez également fournir une borne de Service qui permet la synchronisation de l'adaptateur de cadre à l'appel de l'authentificateur méthodes.

Il y a un article complet sur la Création d'un Talon Authentificateur. Je me rends compte que cette question est ancienne et une réponse a été accepté il y a longtemps, mais j'ai senti qu'un ajout récent à la officiel docs devraient être inclus ici.

12voto

siamii Points 5133

Je reçois beaucoup de notifications à partir de cette question, donc je pense que je vais partager cette info. C'est de cette façon que vous ajoutez SyncAdapter sans Compte. Vous pouvez mettre ceci dans onCreate de MyApplication extends Application classe. Cela suppose que vous avez déjà SyncAdapter et ContentProvider mis en œuvre. Vous pouvez le faire en suivant les tutoriels listés dans la question.

final String ACCOUNT_NAME = "MyApp";
final String ACCOUNT_TYPE = "com.myapp.account";
final String PROVIDER = "com.myapp.provider";

Account appAccount = new Account(ACCOUNT_NAME,ACCOUNT_TYPE);
AccountManager accountManager = AccountManager.get(getApplicationContext());
if (accountManager.addAccountExplicitly(appAccount, null, null)) {
   ContentResolver.setIsSyncable(appAccount, PROVIDER, 1);
   ContentResolver.setMasterSyncAutomatically(true);
   ContentResolver.setSyncAutomatically(appAccount, PROVIDER, true);
}

res/xml/syncadapter.xml

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
    android:contentAuthority="@string/provider"
    android:accountType="@string/account_type"  
    android:userVisible="true"  
    android:supportsUploading="true"
/>

res/xml/authenticator.xml

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="@string/account_type"
    android:icon="@drawable/app_icon"
    android:smallIcon="@drawable/app_icon"
    android:label="@string/app_label"
/>

11voto

Shane Powell Points 6235

J'ai créé un contact de synchronisation adaptateur où je n'ai pas de compte, l'autorisation et la ou les écrans de configuration. Il n'était pas bien difficile. Je ne pense pas que d'avoir à traiter avec de l'Android Compte des trucs, il y avait beaucoup d'une affaire.

Citation de ton tuto lien:

La mauvaise nouvelle, c'est qu'il n'y est pas le "stock" des fonctionnalités pour vous donner une moyen facile de fournir un Compte à l' système. Cependant, dans le même Sync Adaptateur Exemple qui vient à l' SDK, il y a beaucoup de code, vous pouvez emprunter pour vous donner le Compte la fonctionnalité. Sauf si vous désirez un badges personnalisés écran, vous pouvez hold-up tout le code dans la com.exemple.android.samplesync.authentificateur paquet avec seulement quelques modifications mineures.

C'est en fait juste un copier-coller de l'exemple, c'est à peu près ce que j'ai fait et il a bien fonctionné.

Je ne sais pas pour vous, mais toutes les cartes qui n'ont pas de "Supprimer le Compte" semble être intégré dans la ROM cartes sur tous les appareils que j'ai regardé. Je ne suis pas sûr de vous avoir à s'en inquiéter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X