diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java index a56dc94c2a35555b36ff858c9baee5ee5b3c5190..b5be9a1a9bca380c3f0000ffb6505f904524af0a 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -386,6 +386,16 @@ public class AccountSyncSettings extends AccountPreferenceBase { extras); } else { ContentResolver.cancelSyncAsUser(account, authority, mUserHandle.getIdentifier()); + cancelMailSync(account, authority); + } + } + + private void cancelMailSync(Account account, String authority) { + if (MailAccountSyncHelper.MAIL_SYNC_AUTHORITY.equals(authority)) { + final Context context = getPrefContext().getApplicationContext(); + final AccountManager accountManager = AccountManager.get(context); + final String email = accountManager.getUserData(account, "email_address"); + MailAccountSyncHelper.getInstance().disableSync(context, email); } } diff --git a/src/com/android/settings/accounts/MailAccountSyncHelper.java b/src/com/android/settings/accounts/MailAccountSyncHelper.java index c48886752d3e93249a78acaba0e0b84d0345b846..1af8faa0043048280d641ebc30109b41cd7829b9 100644 --- a/src/com/android/settings/accounts/MailAccountSyncHelper.java +++ b/src/com/android/settings/accounts/MailAccountSyncHelper.java @@ -24,9 +24,12 @@ import android.os.Build; public class MailAccountSyncHelper { + public static final String MAIL_SYNC_AUTHORITY = "foundation.e.mail.provider.AppContentProvider"; + private static final String MAIL_PACKAGE = "foundation.e.mail"; private static final String MAIL_RECEIVER_CLASS = "com.fsck.k9.account.AccountSyncReceiver"; private static final String ACTION_PREFIX = "foundation.e.accountmanager.account."; + private static final String ACCOUNT = "account"; private static MailAccountSyncHelper instance = null; @@ -40,12 +43,20 @@ public class MailAccountSyncHelper { } public void accountLoggedOut(Context applicationContext, String email) { - if (applicationContext == null || email == null || !email.contains("@")) { + sendBroadCast(applicationContext, email, "remove"); + } + + public void disableSync(Context applicationContext, String email) { + sendBroadCast(applicationContext, email, "disablesync"); + } + + private void sendBroadCast(Context applicationContext, String email, String action) { + if (applicationContext == null || email == null || !email.contains("@") || action == null || action.isEmpty()) { return; } - Intent intent = getIntent(); - intent.setAction(ACTION_PREFIX + "remove"); - intent.putExtra("account", email); + final Intent intent = getIntent(); + intent.setAction(ACTION_PREFIX + action); + intent.putExtra(ACCOUNT, email); applicationContext.sendBroadcast(intent); }