Поиск Контакта По Номеру Телефона

В одном из приложений возник вопрос о поиске контакта по номеру телефона (при получении СМС).

Задача оказалась не такой простой — в базе контактов номера телефонов часто записаны в произвольном (удобном) формате: здесь вместо кода страны используется цифра 8, а для разделения — скобки и/или пробелы.

части числа.

А дальше оператор добавил свою фантазию и преобразовал номер автора СМС в более читаемый формат — код страны, код оператора и сам номер телефона разделяются пробелами.

Функция приведения номеров в международный формат была выполнена не добросовестно и заняла слишком много времени.

Поиск ответа в документации также не дал особых результатов, но помогло изучение исходника.

Оказалось, что в запросах SQLite можно использовать функцию PHONE_NUMBERS_EQUAL(NUMBER1, NUMBER2, STRICT).

Третий параметр можно опустить.

Этот метод отлично работает.

  
   

String[] projection = new String[] { ContactsContract.Data.CONTACT_ID, ContactsContract.Contacts.LOOKUP_KEY, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.STARRED, ContactsContract.Contacts.CONTACT_STATUS, ContactsContract.Contacts.CONTACT_PRESENCE }; String selection = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'"; String selectionArgs = new String[] { phoneNumber }; Cursor cursor = getContentResolver().

query(ContactsContract.Data.CONTENT_URI, projection, selection, selectionArgs, null);

Сам исходный номер желательно перед поиском привести к более простому виду:

String phoneNumber = PhoneNumberUtils.stripSeparators(sourcePhoneNumber);

Возможно кому-то это поможет и сэкономит время и силы.

Теги: #Android #контактыдоговор #разработка Android

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.