Я создаю пользовательский интерфейс, где мне нужно показать список контактов телефона в виде списка.Как отображать только телефонные контакты (исключая контакты SIM-карты)
Я использую ContactsContract.Data
и CursorLoader
, чтобы загрузить данные, а затем привязать курсор к пользовательскому адаптеру (расширенный от SimpleCursorAdapter
).
Проблема в том, что я не могу понять, как отфильтровать контакты SIM-карты; на тестовом телефоне у меня одинаковые контакты на телефоне, а также на SIM-карте, что приводит к дублированию записей в списке. Если я удалю SIM-карту, дубликаты исчезнут.
Как отключить этот фильтр от контактов SIM-карты? Я ищу способ получить данные с помощью 1 запроса.
Это, как я загрузить мои данные на данный момент:
Uri queryUri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Data.MIMETYPE,
ContactsContract.RawContacts.ACCOUNT_TYPE };
selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = 1 AND IS_PRIMARY = 1 AND MIMETYPE = '" + Phone.CONTENT_ITEM_TYPE + "'";
cursorLoader = new CursorLoader(getActivity(), queryUri, projection, selection, null, ContactsContract.Contacts.DISPLAY_NAME);
cursor = cursorLoader.loadInBackground();
//setup adapter, bind to listview etc..
Никто? Неужели это так сложно? –