Я пытаюсь составить список контактов, имеющих электронную почту, телефон или и то, и другое. Для этой цели я использую ContentResolver
с URI установлен ContactsContract.Data.CONTENT_URI
и я выбираю из этих условий:Свяжитесь с нами, у которых есть адрес электронной почты или номер телефона с уникальными результатами
String SELECTION = ContactsContract.Data.DISPLAY_NAME_PRIMARY + "<>'' AND " + ContactsContract.Data.IN_VISIBLE_GROUP + "=1" + " AND (" + ContactsContract.Data.MIMETYPE + "=? OR " + ContactsContract.Data.MIMETYPE + "=?)";
String[] SELECTION_ARGS = new String[]{ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE};
Я заинтересован только в имени такого контакта. Но поскольку в таблице данных содержится каждая информация для данного контакта в отдельной строке, приведенный курсор имеет в ней повторяющиеся записи.
Есть ли способ ОТЛИЧИТЬ эти записи? Я использую CursorLoaderManager
с CursorAdapter
(может быть, только способ - отфильтровать их при завершении загрузки?).
Вы видели [это] (http://stackoverflow.com/questions/2315203/android-distinct-and-groupby-in-contentresolver), это немного старый, но может быть полезным. –
Я пробовал все, но, к сожалению, ничего не помогает из-за того, что эти «хаки» были исправлены в последних версиях Android или они не работают с поставщиками контактных материалов:/ – bakua