diff --git a/src/com/fsck/k9/Account.java b/src/com/fsck/k9/Account.java index c1fc7a482..3d49694b6 100644 --- a/src/com/fsck/k9/Account.java +++ b/src/com/fsck/k9/Account.java @@ -18,6 +18,7 @@ import com.fsck.k9.mail.store.StorageManager; import com.fsck.k9.mail.store.StorageManager.StorageProvider; import com.fsck.k9.view.ColorChip; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -415,18 +416,24 @@ public class Account implements BaseAccount { } protected synchronized void delete(Preferences preferences) { + // Get the list of account UUIDs String[] uuids = preferences.getPreferences().getString("accountUuids", "").split(","); - String[] newUuids = new String[uuids.length - 1]; - int i = 0; + + // Create a list of all account UUIDs excluding this account + List newUuids = new ArrayList(uuids.length); for (String uuid : uuids) { - if (uuid.equals(mUuid) == false) { - newUuids[i++] = uuid; + if (!uuid.equals(mUuid)) { + newUuids.add(uuid); } } - String accountUuids = Utility.combine(newUuids, ','); SharedPreferences.Editor editor = preferences.getPreferences().edit(); - editor.putString("accountUuids", accountUuids); + + // Only change the 'accountUuids' value if this account's UUID was listed before + if (newUuids.size() < uuids.length) { + String accountUuids = Utility.combine(newUuids.toArray(), ','); + editor.putString("accountUuids", accountUuids); + } editor.remove(mUuid + ".storeUri"); editor.remove(mUuid + ".localStoreUri");