日期:2014-05-20  浏览次数:20769 次

请高手帮忙,android 同步问题, 在我的contact sync的时候
  当我再android模拟器上同步联系人的时候, 如果有一个联系人被更新, 我想知道这个时机, 然后把联系人反映到我的应用程序上, 我现在只能请求sync, 却不知道他什么时候完成, 什么时候同步下来一个联系人。

我的code:

  private void requestSync()
{
    AccountManager am = AccountManager.get(this);
        Account[] accounts = am.getAccounts();
        
        for (Account account : accounts)
        {
            int isSyncable = ContentResolver.getIsSyncable(account, ContactsContract.AUTHORITY);
            
            if (isSyncable > 0)
            {
                Bundle extras = new Bundle();
                extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
                ContentResolver.requestSync(accounts[0], ContactsContract.AUTHORITY, extras);
            }
        }
}
------解决方案--------------------
你可以使用ContentResolver.addStatusChangeListener监听系统同步的状态,在onStatusChanged方法里判断ContentResolver.isSyncPending和ContentResolver.isSyncActive,两个都为false表示一次同步结束了,然后可以为联系人URI注册侦听器,registerContentObserver,当联系人表有变化,就会回调onChange