2010-07-23 10 views

Répondre

4

L'utilisateur ne contrôle pas si compte sont sélectionnés pour la synchronisation - Les paires (acount, contentAuthority) sont plutôt sélectionnées. Par exemple, votre compte Gmail peut être vérifié pour synchroniser les contacts, mais pas les événements d'agenda.

Voici un code permettant de vérifier si le premier compte "com.google" saisi est synchronisé avec les contacts Google. (Notez que « com.google » est le de type de compte, pas le contenu réel du nom d'utilisateur. Vous pourriez avoir un compte Google Apps avec votre propre nom de domaine là-bas)

import android.provider.ContactsContract; 

AccountManager am = AccountManager.get(this); 
Account[] accounts = am.getAccountsByType("com.google");   
boolean syncEnabled = ContentResolver.getSyncAutomatically(accounts[0], ContactsContract.AUTHORITY); 

Ce code va évidemment échouer si accounts [] est de taille 0 (pas de compte enregistré) et est sans signification en présence de plusieurs comptes. Vous devrez faire une sorte de sélection raisonnable pour le compte. Il existe également d'autres moyens de se procurer un compte.

Juste parce que c'est vérifié ne signifie pas qu'il est garanti pour synchroniser. Des conditions supplémentaires sont impliquées: le paramètre de synchronisation globale (activé/désactivé), la disponibilité du réseau et la planification et la fréquence de la synchronisation périodique. ContentResolver est également votre passerelle vers toutes ces requêtes.