Как запросить контакты Android 2.x по электронной почте и / или телефонным номерам? - PullRequest
3 голосов
/ 06 января 2011

Давайте перебьем ваш садовый разнообразный Android 2.x Видимый идентификатор контакта / курсор имен (через ContactsContract ):

Cursor c = getContentResolver().query(
  Contacts.CONTENT_URI,
  new String[] { Contacts._ID, Contacts.DISPLAY_NAME },
  Contacts.IN_VISIBLE_GROUP + " = '1'",
  null,
  Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"
);

Есть ли способ отфильтровать это, чтобы получить контактыу которого есть хотя бы один адрес электронной почты и / или номер телефона?

Я вижу, что могу использовать Contacts.HAS_PHONE_NUMBER ... но я не вижу HAS_EMAIL в любом месте.(Скажите мне, что это не станет уродливым.)

Ответы [ 2 ]

4 голосов
/ 06 января 2011

Запрос соответствующего провайдера контента Uri.Например, android.provider.ContactsContract.CommonDataKinds.Email позволяет вам получать адреса электронной почты, а другие столбцы (например, IN_VISIBLE_GROUP) неявно объединяются.

Вот пример проекта , который демонстрирует использование этих другихЗначения Uri провайдера контента.

0 голосов
/ 06 марта 2012

Я только что перечислил столбцы на курсоре, выбранные для контактов, вот так:

Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
String[] names = c.getColumnNames();
for (String string : names) {
    Log.d("ContactList", "RC column " + string);
}
c.close();

Результат содержит has_email.Хотя это может быть специфично для вкладки галактики.

...