Android SyncAdapter inicializa automaticamente a sincronização
eu tenho umSyncAdapter
para meu aplicativo e umAccountManager
para adicionar minhas contas de aplicativos ao Gerenciador de contas do Android. Meu código para quando eu adiciono uma conta ao gerente de conta é semelhante a:
Bundle data = new Bundle(5);
data.putString(_PEOPLE_ID, people_id);
data.putString(_FIRST_NAME, first_name);
data.putString(_LAST_NAME, last_name);
data.putString(_PLAN, plan);
data.putString(_BIRTHDAY, birthday);
Account account = new Account(username, _ACCOUNT_TYPE);
try {
boolean created;
created = _account_manager.addAccountExplicitly(account,
_cryptography.encrypt(_SEED, password), data);
response.accountCreated(created);
_account_manager.setAuthToken(account, _TOKEN_TYPE, session_token);
_model.updateActiveAccount(people_id, username, password);
SharedPreferences.Editor settings = _settings.edit();
settings.putString(_ACCOUNT_TYPE, account.name);
settings.putString(_TOKEN_TYPE, session_token);
settings.commit();
// Tells the content provider that it can sync this account
ContentResolver.setIsSyncable(account, AUTHORITY, 1);
final Bundle extras = new Bundle(1);
extras.putBoolean(SYNC_EXTRAS_INITIALIZE, true);
ContentResolver.addPeriodicSync(account, AUTHORITY, extras, 900);
} catch (Exception e) {
Ln.e(e.getCause());
}
Posso adicionar a conta ao Gerenciador de Contas com êxito por meio de Configurações, mas preciso ativar manualmente a sincronização para a conta nas Configurações, mesmo que as configurações de dados de segundo plano e sincronização automaticamente estejam ativadas no emulador. Se eu habilitar manualmente a sincronização, a sincronização será executada bem, ela não será iniciada por padrão.