Аккаунты контактов Android - PullRequest
       17

Аккаунты контактов Android

1 голос
/ 20 февраля 2012

Мне нужно динамически добавлять новые контакты из моего приложения. Я перечисляю все учетные записи телефонов с помощью метода getAccounts AccountManager, но я получаю учетные записи, такие как погода, акции и т. Д. Как получить только контактные аккаунты?

Ответы [ 2 ]

0 голосов
/ 30 августа 2012

Была похожая ситуация.

После небольшого поиска нашел этот метод AccountManager:

getAccountsByTypeAndFeatures();

здесь, если вы установите параметры для параметров «service_mail», «service_talk» и т. Д., Вы получите учетные записи, поддерживающие электронную почту и чат, следовательно, эти учетные записи также будут поддерживать контакты.

UPDATE

"service_ah" даст учетную запись, с которой связано устройство.

0 голосов
/ 21 февраля 2012

На самом деле нет хорошего способа сделать это с помощью API. Наиболее точный метод, который мы нашли, это думать задом наперед: какие учетные записи используются для хранения контактов?

Это немного грубо, но дает довольно хорошие результаты (кэшируйте список, и вам не нужно делать это каждый раз).

// Pseudo-code
for contact in RawContacts
    uniqueAccountTypes.put(contact.account)
for accountType in uniqueAccountTypes
    uniqueAccountsWithContacts.putAll(accountManager.getAccountsByType(accountType))

У меня нет доступа к копии базы данных контактов в данный момент, поэтому приведенный выше код может быть немного отключен, но концепция должна быть ясной. Дайте мне знать, если мне следует уточнить.

...