Fix issue with account existence check
It should only consider accounts that provide contacts.
Test: ran GoogleContactsTests
Bug 33627801
Change-Id: Ib3907fbede4623b88d7f89f102f4eef3883ffbad
diff --git a/src/com/android/contacts/model/AccountTypeManager.java b/src/com/android/contacts/model/AccountTypeManager.java
index ddbadfd..cbdccd5 100644
--- a/src/com/android/contacts/model/AccountTypeManager.java
+++ b/src/com/android/contacts/model/AccountTypeManager.java
@@ -667,7 +667,15 @@
@Override
public boolean hasNonLocalAccount() {
final Account[] accounts = mAccountManager.getAccounts();
- return accounts != null && accounts.length > 0;
+ if (accounts == null) {
+ return false;
+ }
+ for (Account account : accounts) {
+ if (mTypeProvider.supportsContactsSyncing(account.type)) {
+ return true;
+ }
+ }
+ return false;
}
/**
diff --git a/src/com/android/contacts/model/account/AccountTypeProvider.java b/src/com/android/contacts/model/account/AccountTypeProvider.java
index e5d0448..e30ae29 100644
--- a/src/com/android/contacts/model/account/AccountTypeProvider.java
+++ b/src/com/android/contacts/model/account/AccountTypeProvider.java
@@ -15,6 +15,8 @@
*/
package com.android.contacts.model.account;
+import static com.android.contacts.util.DeviceLocalAccountTypeFactory.Util.isLocalAccountType;
+
import android.accounts.AccountManager;
import android.accounts.AuthenticatorDescription;
import android.content.ContentResolver;
@@ -38,8 +40,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import static com.android.contacts.util.DeviceLocalAccountTypeFactory.Util.isLocalAccountType;
-
/**
* Provides access to {@link AccountType}s with contact data
*
@@ -150,6 +150,10 @@
return true;
}
+ public boolean supportsContactsSyncing(String accountType) {
+ return mAuthTypes.containsKey(accountType);
+ }
+
private List<AccountType> loadTypes(String type) {
final AuthenticatorDescription auth = mAuthTypes.get(type);
if (auth == null) {