2012-02-20 4 views
1

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

ответ

0

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

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

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

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

+0

Этот метод не будет работать во всех случаях. Приложение контактов по умолчанию может сделать это, поэтому должен быть другой способ. –

0

Имел подобную ситуацию.

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

getAccountsByTypeAndFeatures(); 

здесь, если вы установите функции параметра как «service_mail», «service_talk» и т.д., вы получите счета с поддержкой электронной почты и чата, следовательно, они счета также будут поддерживать контакты.

UPDATE

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

Смежные вопросы