我有一个SyncAdapter
用于我的应用程序,并且有一个AccountManager
将我的应用程序账户添加到Android账户管理器中。当我向帐户管理器添加帐户时,我的代码如下:
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());
}
通过设置我可以成功将帐户添加到“帐户管理器”中,但是在虚拟机上启用后台数据和自动同步设置时,我仍然需要在设置中手动启用该帐户的同步功能。如果我手动启用同步,则同步会正常执行,只是默认情况下不会启动。
AUTHORITY
是什么? - kapeelssync-adapter
标签中的android:contentAuthority
属性所对应的字符串上。 - kapeels