Resend notifications when Accounts are changed

When AccountManager notifies of account change, resend notifications
because the existing ones can point to an account that doesn't
exist anymore.

Bug: 17713589 Gmail crashes when accessing an old notification for an account that has been deleted.
Change-Id: I6c2cf5234006f4859fea5bbaa52970963bcfccdd
This commit is contained in:
Régis Décamps 2014-10-07 15:16:40 +02:00
parent ab3ed2cb7a
commit ac03b55765

View File

@ -40,13 +40,13 @@ import com.android.email.R;
import com.android.email.SecurityPolicy;
import com.android.email.provider.AccountReconciler;
import com.android.emailcommon.Logging;
import com.android.emailcommon.VendorPolicyLoader;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.EmailContent;
import com.android.emailcommon.provider.EmailContent.AccountColumns;
import com.android.emailcommon.provider.HostAuth;
import com.android.mail.providers.UIProvider;
import com.android.mail.utils.LogUtils;
import com.android.mail.utils.NotificationActionUtils;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
@ -367,5 +367,9 @@ public class EmailBroadcastProcessorService extends IntentService {
private void onSystemAccountChanged() {
LogUtils.i(Logging.LOG_TAG, "System accounts updated.");
reconcileAndStartServices();
// Resend all notifications, so that there is no notification that points to a removed
// account.
NotificationActionUtils.resendNotifications(getApplicationContext(),
null /* all accounts */, null /* all folders */);
}
}