Tôi có một SyncAdapter
cho ứng dụng của mình và AccountManager
để thêm tài khoản ứng dụng của tôi vào Trình quản lý tài khoản Android. Mã của tôi khi tôi thêm một tài khoản để quản lý tài khoản trông giống như:Android SyncAdapter Tự động khởi chạy Đồng bộ hó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());
}
tôi có thể thêm tài khoản vào tài khoản quản lý thành công thông qua Settings, nhưng tôi phải tự Bật đồng bộ hóa cho tài khoản trong Cài đặt cũng có, thậm chí mặc dù dữ liệu nền và đồng bộ hóa cài đặt tự động được bật trên trình mô phỏng. Nếu tôi bật đồng bộ hóa theo cách thủ công, thì đồng bộ hóa được thực hiện tốt, nó chỉ không được khởi động theo mặc định.
Thêm nội dungResolver.setSyncTự động (tài khoản, AUTHORITY, true); là những gì tôi cần, nhưng có vẻ như nó không thừa nhận sự đồng bộ định kỳ. Sau khi tôi thêm tài khoản, nó chỉ liên tục đồng bộ hóa. –
Vui lòng thử gọi hàm ContentResolver.addPeriodicSync() với Bundle mới() thay vì tính năng bổ sung. – Blehi
extras là một Bundle mới(), tôi thậm chí còn thử nó mà không cố gắng đặt bất kỳ cờ nào (Bundle extras = new Bundle(); addPeriodicSync (tài khoản, AUTHORITY, extras, 900);) –