2012-10-09 9 views

risposta

9

La sincronizzazione avviene automaticamente. È possibile aggiungere o eliminare i contatti in modo programmatico. Tuttavia, la sincronizzazione viene gestita automaticamente dal sistema operativo se e solo se l'utente ha abilitato l'opzione 'sincronizza collegamenti' nelle impostazioni del telefono.

È tuttavia possibile eseguire una routine di sincronizzazione che può chiamare il processo di sincronizzazione, se la sincronizzazione è abilitata dall'utente utilizzando qualcosa di simile:

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); 
     } 
    } 
} 
+0

È inoltre necessario aggiungere '' al manifest – maxivis

0

Il seguente potrebbe anche essere una buona risposta. Il suo simile al precedente, ma le impostazioni predefinite applicazione utilizza il codice simile al seguente:

private void requestSyncForAccounts() { 
    SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypes(); 
    Bundle extras = new Bundle(); 
    extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); 
    Account[] accounts = AccountManager.get(PeopleActivity.this).getAccounts(); 
    for (Account account : accounts) { 
     for (int j = 0; j < syncAdapters.length; j++) { 
      SyncAdapterType sa = syncAdapters[j]; 
      if (ContentResolver.getSyncAutomatically(account, sa.authority)) { 
       ContentResolver.requestSync(account, sa.authority, extras); 
      } 
     } 
    } 
} 
Problemi correlati