diff options
| author | Amith Yamasani <yamasani@google.com> | 2012-09-26 15:06:10 -0700 |
|---|---|---|
| committer | Amith Yamasani <yamasani@google.com> | 2012-09-26 15:06:10 -0700 |
| commit | d648a605e8249219ce60ac93e074758ebb6fc4ab (patch) | |
| tree | f306b8e98444a54203ebe15fc04421286cbb430a /core/java/android/content/SyncManager.java | |
| parent | 4368ba45adebf17d7962ad551363ac302cb2b1c7 (diff) | |
| download | frameworks_base-d648a605e8249219ce60ac93e074758ebb6fc4ab.zip frameworks_base-d648a605e8249219ce60ac93e074758ebb6fc4ab.tar.gz frameworks_base-d648a605e8249219ce60ac93e074758ebb6fc4ab.tar.bz2 | |
Fix sync problems when setting up a new user and account
Bug: 7197445
The listener on AccountManager is not sufficient since it only triggers when
primary user's accounts change.
Switch to watching for LOGIN_ACCOUNTS_CHANGED_ACTION for all users.
Change-Id: I63f526aebd70f0ad777490f3e0b6e6894220d26c
Diffstat (limited to 'core/java/android/content/SyncManager.java')
| -rw-r--r-- | core/java/android/content/SyncManager.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index 4257e0e..4999a2d 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -203,6 +203,12 @@ public class SyncManager implements OnAccountsUpdateListener { } }; + private BroadcastReceiver mAccountsUpdatedReceiver = new BroadcastReceiver() { + public void onReceive(Context context, Intent intent) { + onAccountsUpdated(null); + } + }; + private final PowerManager mPowerManager; // Use this as a random offset to seed all periodic syncs @@ -456,8 +462,11 @@ public class SyncManager implements OnAccountsUpdateListener { }); if (!factoryTest) { - AccountManager.get(mContext).addOnAccountsUpdatedListener(SyncManager.this, - mSyncHandler, false /* updateImmediately */); + // Register for account list updates for all users + mContext.registerReceiverAsUser(mAccountsUpdatedReceiver, + UserHandle.ALL, + new IntentFilter(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION), + null, null); // do this synchronously to ensure we have the accounts before this call returns onAccountsUpdated(null); } |
