Intereting Posts
Не работает клавиатура Android Найти маршрут с андроидами API Карт Google TextInputLayout не имеет никакого эффекта для программной подсказки в EditText Максимальная длина метода putExtra Intent? (Закрыть) Kotlin: Как работать со списками: Непроверено В ролях: kotlin.collections.List <Kotlin.Any?> To kotlin.colletions.List <Путевая точка> Потоковая передача с помощью Android MediaPlayer – уловки и буферизация Получить результат от DialogFragment PictureCallback.onPictureTaken никогда не вызывал Как вставить медиаплеер VLC в мое приложение для Android Android: объединение или объединение двух аудиофайлов зависает приложение Как не обфускать методы интерфейса и его параметры с помощью Progaurd в android? Подключиться к точке доступа с помощью QPython? Получите MAC-адрес Ethernet для Android (не интерфейс Wi-Fi) Есть ли более быстрый способ декодирования символов html для строки, чем Html.fromHtml ()? Пользовательская панель поиска, разрезающая края,

Проверьте, включена ли синхронизация в приложении 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 } 

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