2012-10-09 10 views

Antwort

9

Die Synchronisierung wird automatisch durchgeführt. Sie können Kontakte programmatisch hinzufügen oder löschen. Die Synchronisierung wird jedoch vom Betriebssystem automatisch durchgeführt, wenn der Benutzer die Option "Synchronisierungseinstellungen" in den Telefoneinstellungen aktiviert hat.

können Sie laufen jedoch eine Synchronisierungsroutine, die die Synchronisierung Prozess aufrufen kann, wenn die Synchronisierung durch den Benutzer mit so etwas wie dies aktiviert ist:

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

Sie müssen auch '' zum Manifest hinzufügen – maxivis

0

Das folgende könnte auch eine gute Antwort sein. Sein ähnlich dem oben ein, aber Standard-Einstellungen App nutzt Code etwas wie folgt aus:

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