Is there a way to check, programmatically within my Android app, whether a particular setting under Settings > Accounts and Sync > Data & Synchronization is enabled or not?
Is there a way to check if the general sync settings are enabled?
Thanks!
If it helps to know "why," I'm currently rolling my own sync functionality (not using SyncAdapter). However, if possible I'd like to have my sync service listed under Data & Synchronization. Right now I'm planning to hack a dummy sync service that does nothing and have my app's sync service query whether or not the dummy sync service is enabled. That will tell me whether to sync or not.
You can check whether sync is enable or not with the help of below code and this Document
AccountManager am = AccountManager.get(YourActivity.this);
Account account = am.getAccountsByType(Const.ACCOUNT_TYPE)[0];
if(ContentResolver.isSyncActive(account, DataProvider.AUTHORITY){
// sync is enable
}
You can also set enable/disable programmatically with the help of this ContentResolver.setSyncAutomatically
and ContentResolver.setMasterSyncAutomatically
Update :
isSyncActive returns true if there is currently a sync operation for the given account or authority in the pending list, or actively being processed.
boolean isEnabled = ContentResolver.getSyncAutomatically(account, MyProvider);
if(isEnabled)
{
...do something
}
Works for me
To know if a sync is enabled (and not active as rajpara's answer do), use this:
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();
The "master" sync status is the global sync switch the user can use to disable all sync on his phone. If the master sync is off, your account won't sync, even if your account sync status tells that it's enabled.
As @HiB mentionned, the android.permission.READ_SYNC_SETTINGS
permission is needed to access the sync status. android.permission.WRITE_SYNC_SETTINGS
is needed to enable/disable it.
You also need android.permission.GET_ACCOUNTS
to get the accounts, as MeetM mentionned.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With