Update accounts backup when externally deleted

Fix the case in which an Email account is deleted in the Account Manager
UI, and we delete the provider account, but we did not also update the
backups.  In some cases, the deleted account would be accidentally
restored from the backups.

Bug: 2414469 (internal)
Bug: 2427663 (external)
This commit is contained in:
Andrew Stadler 2010-02-08 16:27:05 -08:00
parent 75753107af
commit 26c95ddace

View File

@ -1220,6 +1220,7 @@ public class SyncManager extends Service implements Runnable {
android.accounts.Account[] accts =
AccountManager.get(this).getAccountsByType(Eas.ACCOUNT_MANAGER_TYPE);
List<Account> easAccounts = getAccountList();
boolean accountsDeleted = false;
for (Account easAccount: easAccounts) {
String accountName = easAccount.mEmailAddress;
boolean found = false;
@ -1231,12 +1232,18 @@ public class SyncManager extends Service implements Runnable {
}
if (!found) {
// This account has been deleted in the AccountManager!
log("Account deleted in AccountManager; deleting from provider: " + accountName);
alwaysLog("Account deleted in AccountManager; deleting from provider: " +
accountName);
// TODO This will orphan downloaded attachments; need to handle this
mResolver.delete(ContentUris.withAppendedId(Account.CONTENT_URI, easAccount.mId),
null, null);
accountsDeleted = true;
}
}
// If we changed the list of accounts, refresh the backup
if (accountsDeleted) {
AccountBackupRestore.backupAccounts(getContext());
}
}
private void releaseConnectivityLock(String reason) {