Проверьте, включена ли синхронизация в приложении Android

Есть ли способ проверить программно в моем приложении для Android, включен ли какой-либо параметр в разделе «Настройки»> «Учетные записи» и «Синхронизация»> «Данные и синхронизация» или нет?

Есть ли способ проверить, включены ли общие настройки синхронизации?

Благодаря!


Если это помогает узнать «почему», я в настоящее время перепрограммирую собственную функцию синхронизации (не используя SyncAdapter). Однако, если возможно, я хотел бы иметь свою службу синхронизации, указанную в разделе «Данные и синхронизация». Прямо сейчас я планирую взломать фиктивную службу синхронизации, которая ничего не делает и имеет запрос на синхронизацию моего приложения, независимо от того, включена ли фиктивная служба синхронизации. Это скажет мне, следует ли синхронизировать или нет.

Solutions Collecting From Web of "Проверьте, включена ли синхронизация в приложении Android"

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

AccountManager am = AccountManager.get(YourActivity.this); Account account = am.getAccountsByType(Const.ACCOUNT_TYPE)[0]; if(ContentResolver.isSyncActive(account, DataProvider.AUTHORITY){ // sync is enable } 

Вы также можете настроить включение / выключение программно с помощью этого ContentResolver.setSyncAutomatically и ContentResolver.setMasterSyncAutomatically

Обновление :

IsSyncActive возвращает true, если в текущем аккаунте или полномочиях в ожидающем списке есть активная операция синхронизации или активно обрабатывается.

Чтобы узнать, включена ли синхронизация (и неактивна, как ответ rajpara ), используйте это:

 AccountManager am = AccountManager.get(YourActivity.this); Account account = am.getAccountsByType(YOUR_ACCOUNT_TYPE)[0]; boolean isYourAccountSyncEnabled = ContentResolver.getSyncAutomatically(account, DataProvider.AUTHORITY); boolean isMasterSyncEnabled = ContentResolver.getMasterSyncAutomatically(); 

«Главный» статус синхронизации – это глобальный переключатель синхронизации, который пользователь может использовать для отключения всей синхронизации на своем телефоне. Если основная синхронизация отключена, ваша учетная запись не будет синхронизироваться, даже если статус синхронизации вашей учетной записи указывает, что она включена.

Как упоминалось в @HiB, для доступа к статусу синхронизации требуется разрешение android.permission.READ_SYNC_SETTINGS . android.permission.WRITE_SYNC_SETTINGS необходимо включить / отключить.

Вам также нужна android.permission.GET_ACCOUNTS чтобы получить учетные записи, как упоминалось в MeetM.

 boolean isEnabled = ContentResolver.getSyncAutomatically(account, MyProvider); if(isEnabled) { ...do something } 

Работает на меня