J'ai un SyncAdapter
pour mon application, et un AccountManager
pour ajouter mes comptes d'applications au gestionnaire de compte Android. Mon code quand j'ajouter un compte au gestionnaire de compte ressemble:Android SyncAdapter Initialiser automatiquement la synchronisation
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());
}
Je peux ajouter le compte au gestionnaire de compte avec succès via les paramètres, mais je dois activer manuellement la synchronisation pour le compte dans les paramètres aussi, même Bien que les données d'arrière-plan et les paramètres de synchronisation automatique soient activés sur l'émulateur. Si j'active manuellement la synchronisation, la synchronisation est effectuée correctement, elle n'est pas démarrée par défaut.
Ajout de ContentResolver.setSyncAutomatically (compte, AUTHORITY, true); C'est ce dont j'avais besoin, mais il semble que ce ne soit pas en reconnaissant la synchronisation périodique. Après avoir ajouté un compte, il ne cesse de se synchroniser. –
Essayez d'appeler la fonction ContentResolver.addPeriodicSync() avec le nouveau Bundle() au lieu des extras. – Blehi
extras est un nouveau Bundle(), je l'essaie même sans essayer de définir l'un des drapeaux (Bundle extras = new Bundle(); addPeriodicSync (compte, AUTHORITY, extras, 900);) –