Pull to refresh

Comments 8

Прочитал "… номер контРакта...", думал уже про получение базы данных абонентов различных мобильных операторов…
эм… а нельзя привести все номера только к цифрам (без пробелов, без плюсов, без дефисов и тд) и сравнить их не сначала, а с конца? И если телефон совпал по 10 цифрам с конца (или любое ваше число, подобранное практическим путем), то номера идентичны.
Я точно не помню где такое «подсмотрел», то-ли у Nokia, то-ли Sony-Ericson…
ИМХО, довольно очевидное решение. Тоже сразу в голову пришло как начал читать топик.
Примерно так и работает эта функция, но она написана на C и работает внутри SQLite, т.е. не надо извлекать из базы все имеющиеся номера и сравнивать их. Да и зачем, если для нас уже этот вопрос решили.
Да, спасибо, такая функция есть, но она вроде как для определения CallerID. Повторюсь, для поиска контакта перебирать все номера телефонов из базы несколько утомительно, особенно если надо вывести имя контакта на элементе списка.
return true if they're identical enough for caller ID purposes. Т.е. она пытается найти сходство, достаточное для нужд caller ID, что по счастливой случайности и является вашей нуждой). По крайней мере коды стран, пробелы, плюсы обрабатывала у меня на ура. Другое дело производительность. Солидарен, вывести имена вместе со списком телефонов за приемлемое время задача не тривиальная. Если делать запросы в каскаде для Contacts и Data, то можно второе пришествие Христа залупившись на прогресс бар встретить, и лучше пойти в лес и не вернуться, чем вытягивать все номера из Data в кучу и потом группировать их по контактам. А для поиска да, Ваше решение подкупает, спасибо.
Для получения подробной инфы контакта:
Делаем select из ContactsContract.Data, вытаскиваем оттуда raw_contact_id (ID отдельного, несвязанного контакта).
Делаем select из ContactsContract.RawContacts, оттуда нам надо contact_id (ID агрегированного контакта, т.е. такого, в котором объединены несколько raw-контактов от разных аккаунтов).
Далее ищем в RawContacts все контакты с нашим contact_id, запоминаем их id и берем из Data данные с raw_contact_id равным любому из этих айдишников.
Sign up to leave a comment.

Articles