diff --git a/src/com/android/contacts/model/AccountTypeManager.java b/src/com/android/contacts/model/AccountTypeManager.java index 6d6e81dbbc9c5e3d5e2486db54d4e24e3bf9c17d..e31dcb4f595372443c791db87a05edf7900e2c7c 100644 --- a/src/com/android/contacts/model/AccountTypeManager.java +++ b/src/com/android/contacts/model/AccountTypeManager.java @@ -558,12 +558,29 @@ class AccountTypeManagerImpl extends AccountTypeManager result.add( typeProvider.getTypeForAccount(account).wrapAccount(mContext, account)); } + + filterDuplicateAccounts(result); + AccountInfo.sortAccounts(null, result); return result; } }); } + private void filterDuplicateAccounts(List accountList) { + final List uniqueList = new ArrayList<>(); + + for (AccountInfo resultInfo: accountList) { + final boolean isPresent = uniqueList.stream().anyMatch(resultInfo::sameAccount); + if (!isPresent) { + uniqueList.add(resultInfo); + } + } + + accountList.clear(); + accountList.addAll(uniqueList); + } + @Override public ListenableFuture> filterAccountsAsync( final Predicate filter) {