Update headers when accounts are changed.
Also pass an account to authenticator settings to avoid Email settings crash.
Bug: 6610990
Change-Id: I42884619728dd97446de65cc77e1729f3e143efa
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index a8599bf..353bc3a 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -26,6 +26,9 @@
import com.android.settings.fuelgauge.PowerUsageSummary;
import com.android.settings.wifi.WifiEnabler;
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.OnAccountsUpdateListener;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -64,7 +67,8 @@
/**
* Top-level settings activity to handle single pane and double pane UI layout.
*/
-public class Settings extends PreferenceActivity implements ButtonBarHandler {
+public class Settings extends PreferenceActivity
+ implements ButtonBarHandler, OnAccountsUpdateListener {
private static final String LOG_TAG = "Settings";
private static final String META_DATA_KEY_HEADER_ID =
@@ -183,6 +187,7 @@
ListAdapter listAdapter = getListAdapter();
if (listAdapter instanceof HeaderAdapter) {
((HeaderAdapter) listAdapter).resume();
+ AccountManager.get(this).addOnAccountsUpdatedListener(this, null, true);
}
}
@@ -193,6 +198,7 @@
ListAdapter listAdapter = getListAdapter();
if (listAdapter instanceof HeaderAdapter) {
((HeaderAdapter) listAdapter).pause();
+ AccountManager.get(this).removeOnAccountsUpdatedListener(this);
}
}
@@ -711,6 +717,12 @@
super.setListAdapter(new HeaderAdapter(this, mHeaders, mAuthenticatorHelper));
}
+ @Override
+ public void onAccountsUpdated(Account[] accounts) {
+ mAuthenticatorHelper.onAccountsUpdated(this, accounts);
+ invalidateHeaders();
+ }
+
/*
* Settings subclasses for launching independently.
*/