package com.github.andlyticsproject.sync;
import java.util.List;
import android.accounts.Account;
import android.content.ContentResolver;
import android.content.PeriodicSync;
import android.os.Bundle;
public class AutosyncHandler {
public static int DEFAULT_PERIOD = 60 * 3; // 3 hours (in minutes)
public static final String ACCOUNT_AUTHORITY = "com.github.andlyticsproject";
public static final String ACCOUNT_TYPE_GOOGLE = "com.google";
public boolean isAutosyncEnabled(String accountName) {
Account account = new Account(accountName, AutosyncHandler.ACCOUNT_TYPE_GOOGLE);
return ContentResolver.getSyncAutomatically(account, AutosyncHandler.ACCOUNT_AUTHORITY);
}
public void setAutosyncEnabled(String accountName, boolean enabled) {
Account account = new Account(accountName, AutosyncHandler.ACCOUNT_TYPE_GOOGLE);
ContentResolver.setSyncAutomatically(account, AutosyncHandler.ACCOUNT_AUTHORITY, enabled);
}
/**
* Gets the sync period in minutes for the given account
* @param accountName
* @return The sync period in minutes
*/
public int getAutosyncPeriod(String accountName) {
int result = 0;
Account account = new Account(accountName, AutosyncHandler.ACCOUNT_TYPE_GOOGLE);
if (ContentResolver.getSyncAutomatically(account, AutosyncHandler.ACCOUNT_AUTHORITY)) {
List<PeriodicSync> periodicSyncs = ContentResolver.getPeriodicSyncs(account,
AutosyncHandler.ACCOUNT_AUTHORITY);
for (PeriodicSync periodicSync : periodicSyncs) {
result = 60 * (int) periodicSync.period;
break;
}
}
return result;
}
/**
* Sets the sync period in minutes for the given account
* @param accountName
* @param periodInMins
*/
public void setAutosyncPeriod(String accountName, Integer periodInMins) {
Bundle extras = new Bundle();
Account account = new Account(accountName, AutosyncHandler.ACCOUNT_TYPE_GOOGLE);
if (periodInMins == 0) {
ContentResolver.setSyncAutomatically(account, AutosyncHandler.ACCOUNT_AUTHORITY, false);
} else {
ContentResolver.setSyncAutomatically(account, AutosyncHandler.ACCOUNT_AUTHORITY, true);
ContentResolver.addPeriodicSync(account, AutosyncHandler.ACCOUNT_AUTHORITY, extras, periodInMins * 60);
}
}
}