Сложное условие WHERE в запросе курсора Android - PullRequest
0 голосов
/ 16 сентября 2011

Я хочу запросить данные о контактах и ​​получить имя контакта и номер телефона со следующим условием: если у контакта есть номер мобильного телефона, выберите этот номер, в противном случае выберите любой номер / первый номер контакта.Можно ли сформулировать это условие в запросе курсора, или мне придется делать это в пользовательском адаптере курсора?

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

private String WHERE_CONDITION = ContactsContract.Data.MIMETYPE + " = '" +
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'";
private String[] PROJECTION = {ContactsContract.Data.DISPLAY_NAME,
ContactsContract.Data.DATA1, ContactsContract.Data._ID };
private String SORT_ORDER = ContactsContract.Data.DISPLAY_NAME;
cursor = this.getContentResolver().query(
ContactsContract.Data.CONTENT_URI, PROJECTION, WHERE_CONDITION, null, SORT_ORDER);

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 16 сентября 2011

Было бы намного проще и проще поместить эту логику в Java. Просто найдите все номера и выберите тот, который вам нужен. Обычно у вас будет не более 3 цифр, может быть 5. В любом случае накладные расходы будут очень низкими.

...