summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRégis Décamps <regisd@google.com>2014-08-06 13:22:50 +0200
committerRégis Décamps <regisd@google.com>2014-08-06 20:27:39 +0200
commitf9d845c1b74d1e31db4796cbdb0ad05c0da0068e (patch)
treef30df321fb69534f3ab86673da65ad935153d900 /src
parent65848dc5e0b1b1dd8c7f4fdb8dcae1bff2894dbb (diff)
downloadandroid_packages_apps_Email-f9d845c1b74d1e31db4796cbdb0ad05c0da0068e.tar.gz
android_packages_apps_Email-f9d845c1b74d1e31db4796cbdb0ad05c0da0068e.tar.bz2
android_packages_apps_Email-f9d845c1b74d1e31db4796cbdb0ad05c0da0068e.zip
Fix `getAllAmAccounts()` returning duplicated accounts
Use a set to save the account types, in order to de-duplicate identical types. Also, remove unused imports. Bug: 16811863 Duplicate POP accounts are listed Change-Id: If699d03b2c12959cfde9926bec9352b71c3d8912
Diffstat (limited to 'src')
-rw-r--r--src/com/android/email/provider/AccountReconciler.java24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/com/android/email/provider/AccountReconciler.java b/src/com/android/email/provider/AccountReconciler.java
index 9f604dbab..26f303fc2 100644
--- a/src/com/android/email/provider/AccountReconciler.java
+++ b/src/com/android/email/provider/AccountReconciler.java
@@ -31,13 +31,9 @@ import android.text.TextUtils;
import com.android.email.NotificationController;
import com.android.email.R;
-import com.android.email.activity.ComposeActivityEmail;
-import com.android.email.service.EasAuthenticatorService;
-import com.android.email.service.EasAuthenticatorServiceAlternate;
import com.android.email.service.EmailServiceUtils;
import com.android.email.service.EmailServiceUtils.EmailServiceInfo;
import com.android.emailcommon.Logging;
-import com.android.emailcommon.VendorPolicyLoader;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.HostAuth;
import com.android.mail.utils.LogUtils;
@@ -46,6 +42,7 @@ import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
+import java.util.LinkedHashSet;
import java.util.List;
public class AccountReconciler {
@@ -56,14 +53,19 @@ public class AccountReconciler {
*/
private static List<android.accounts.Account> getAllAmAccounts(final Context context) {
final AccountManager am = AccountManager.get(context);
- final ImmutableList.Builder<android.accounts.Account> builder = ImmutableList.builder();
+
// TODO: Consider getting the types programmatically, in case we add more types.
- builder.addAll(Arrays.asList(am.getAccountsByType(
- context.getString(R.string.account_manager_type_legacy_imap))));
- builder.addAll(Arrays.asList(am.getAccountsByType(
- context.getString(R.string.account_manager_type_pop3))));
- builder.addAll(Arrays.asList(am.getAccountsByType(
- context.getString(R.string.account_manager_type_exchange))));
+ // Some Accounts types can be identical, the set de-duplicates.
+ final LinkedHashSet<String> accountTypes = new LinkedHashSet<String>();
+ accountTypes.add(context.getString(R.string.account_manager_type_legacy_imap));
+ accountTypes.add(context.getString(R.string.account_manager_type_pop3));
+ accountTypes.add(context.getString(R.string.account_manager_type_exchange));
+
+ final ImmutableList.Builder<android.accounts.Account> builder = ImmutableList.builder();
+ for (final String type : accountTypes) {
+ final android.accounts.Account[] accounts = am.getAccountsByType(type);
+ builder.add(accounts);
+ }
return builder.build();
}