Я только что создал учетную запись для своего приложения.
- Учетная запись видна в настройках
- Я установил syncable = "true" в свой XML
- Я могу выполнить ручную синхронизацию, нажав настройки → onPerformSync называется
- Я могу выполнить "кодовую" синхронизацию, вызывая ContentResolver.requestSync → onPerformSync называется
- И, конечно, да, синхронизация включена в настройках. Я не использую энергосбережение.
Я также выполнил все шаги отсюда: qaru.site/info/53206/...
Это мой код, чтобы получить синхронизацию по коду
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType(ACCOUNT);
//Log.e("DEBUG", "Accounts: " + accounts.length);
if (accounts.length == 0) {
Account account = new Account(getString(R.string.app_name), ACCOUNT);
ContentResolver.setIsSyncable(account, AUTHORITY, 1);
ContentResolver.addPeriodicSync(account, AUTHORITY, new Bundle(), 7200);
ContentResolver.setSyncAutomatically(account, AUTHORITY, true);
if (am.addAccountExplicitly(account, "pass1", null))
Log.i("DEBUG", "account Created: " + account.name + ", " + account.type);
else
Log.i("DEBUG", "addAccountExplicitly returned false");
}
else{
ContentResolver.requestSync(accounts[0], AUTHORITY, new Bundle());// THIS IS WORKING!!!
}
}
Итак, все выглядит правильно и прекрасно.
Но, к сожалению, я не могу получить периодическую синхронизацию! Когда я открываю настройки, учетные записи, я вижу учетную запись, а дата и время - это время, когда я выполнял синхронизацию по коду или вручную.
Любая идея о том, что я сделал не так, или что я забыл?