From ac03b5576516f9e14a089b79b00dd7bf2dd48cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20D=C3=A9camps?= Date: Tue, 7 Oct 2014 15:16:40 +0200 Subject: [PATCH] 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 --- .../email/service/EmailBroadcastProcessorService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/provider_src/com/android/email/service/EmailBroadcastProcessorService.java b/provider_src/com/android/email/service/EmailBroadcastProcessorService.java index 3b15904d7..7aa54673e 100644 --- a/provider_src/com/android/email/service/EmailBroadcastProcessorService.java +++ b/provider_src/com/android/email/service/EmailBroadcastProcessorService.java @@ -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 */); } }