На самом деле нет хорошего способа сделать это с помощью API. Наиболее точный метод, который мы нашли, это думать задом наперед: какие учетные записи используются для хранения контактов?
Это немного грубо, но дает довольно хорошие результаты (кэшируйте список, и вам не нужно делать это каждый раз).
// Pseudo-code
for contact in RawContacts
uniqueAccountTypes.put(contact.account)
for accountType in uniqueAccountTypes
uniqueAccountsWithContacts.putAll(accountManager.getAccountsByType(accountType))
У меня нет доступа к копии базы данных контактов в данный момент, поэтому приведенный выше код может быть немного отключен, но концепция должна быть ясной. Дайте мне знать, если мне следует уточнить.