सिंक्रनाइज़ करना प्रारंभ करें मेरे ऐप के लिए SyncAdapter
है, और मेरे ऐप्स खाते को एंड्रॉइड खाता प्रबंधक में जोड़ने के लिए AccountManager
है।एंड्रॉइड सिंक एडाप्टर स्वचालित रूप से
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());
}
मैं सेटिंग के माध्यम से सफलतापूर्वक खाता प्रबंधक को खाता जोड़ सकते हैं, लेकिन मैं मैन्युअल रूप से भी सेटिंग में खाता के लिए समन्वयन सक्षम करने के लिए है, यहां तक कि: की तरह जब मैं खाता प्रबंधक से खाता जोड़ने के लिए मेरे कोड दिखता है हालांकि पृष्ठभूमि डेटा और सिम स्वचालित रूप से एमुलेटर पर सेटिंग्स सक्षम हैं। अगर मैं मैन्युअल रूप से सिंकिंग सक्षम करता हूं, तो सिंक ठीक प्रदर्शन किया जाता है, यह डिफ़ॉल्ट रूप से शुरू नहीं होता है।
ContentResolver.setIsSyncable(account, AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account, AUTHORITY, true);
मैं ऊपर 2 लाइनों का उपयोग करें और यह ठीक से काम कर रहा है:
ContentResolver.setSync स्वचालित रूप से (खाता, प्राधिकरण, सत्य) जोड़ना; मुझे जो चाहिए वह है, लेकिन ऐसा लगता है कि यह आवधिक सिंक को स्वीकार नहीं कर रहा है। एक खाता जोड़ने के बाद यह बार-बार समन्वयित रहता है। –
कृपया सामग्री के रूप में new Bundle() के साथ ContentResolver.addPeriodicSync() फ़ंक्शन को कॉल करने का प्रयास करें। – Blehi
अतिरिक्त एक नया बंडल() है, मैं किसी भी झंडे को सेट करने के बिना भी कोशिश कर रहा हूं (बंडल एक्स्ट्रा = नया बंडल(); addPeriodicSync (खाता, प्राधिकरण, अतिरिक्त, 900);) –