Android, как включить / отключить автоматическую синхронизацию программно

Мне нужно знать, как включать и выключать автоматическую синхронизацию.

Solutions Collecting From Web of "Android, как включить / отключить автоматическую синхронизацию программно"

Я думаю, вы ищете

ContentResolver.setMasterSyncAutomatically(<boolean>); 

В каких документах говорится:

Устанавливает основную настройку автоматической синхронизации, которая применяется ко всем поставщикам и учетным записям. Если это неверно, параметр автоматической синхронизации для каждого провайдера игнорируется.

Этот метод требует, чтобы вызывающий абонент сохранял разрешение WRITE_SYNC_SETTINGS.

Поэтому не забудьте добавить разрешение в manifest.xml:

 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> 

Это должно отключить / включить все синхронизаторы.


@Sajmon: Я обновил это, я думаю, очень полезный ответ (я использую это в своем личном проекте).

Я думаю, что вы хотите следующее:

 ContentResolver.setSyncAutomatically(account, authority, true/false); 

Код для синхронизации учетных записей Программно:

Синхронизация один раз:

 public static void syncAllAccounts(Context contextAct) throws Exception { AccountManager manager = AccountManager.get(contextAct); Account[] accounts = manager.getAccountsByType("com.google"); String accountName = ""; String accountType = ""; for (Account account : accounts) { accountName = account.name; accountType = account.type; break; } Account a = new Account(accountName, accountType); ContentResolver.requestSync(a, "com.android.calendar", new Bundle()); } 

Синхронизация по временному интервалу автоматически:

 public static void syncAllAccountsPeriodically(Context contextAct, long seconds) throws Exception { AccountManager manager = AccountManager.get(contextAct); Account[] accounts = manager.getAccountsByType("com.google"); String accountName = ""; String accountType = ""; for (Account account : accounts) { accountName = account.name; accountType = account.type; break; } Account a = new Account(accountName, accountType); ContentResolver.addPeriodicSync(a, "com.android.calendar", new Bundle(), seconds*1000); } 

Если вы хотите синхронизировать учетные записи один раз , вызовите первый метод, и если вы хотите синхронизировать некоторое время интервала, вы должны вызвать второй метод и передать секунды (как 10 секунд) в качестве аргументов в нем.

Готово

Бен прав.

Вы должны использовать

 ContentResolver.setSyncAutomatically(account, authority, true/false); 

Вам также нужно будет добавить разрешение «WRITE_SYNC_SETTINGS»

 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>