Поиск контакта по телефону

В моем приложении пользователь пишет номер телефона, и я хочу найти имя контакта с этим номером телефона?

Обычно я ищу контакты следующим образом:

Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 

Но я делаю это, чтобы получить доступ ко всем контактам … В этом приложении я хочу получить только имя контакта с указанным номером телефона … Как я могу ограничить запрос?

Или мне нужно пройти через все контакты и посмотреть, есть ли какой-либо номер телефона? Но я считаю, что это может быть очень медленно …

Вы должны взглянуть на рекомендуемого поставщика ContactsContract.PhoneLookup

Таблица, представляющая результат поиска номера телефона, например, для идентификатора вызывающего абонента. Чтобы выполнить поиск, вы должны добавить номер, который хотите найти, в CONTENT_FILTER_URI. Этот запрос сильно оптимизирован.

 Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)); resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,... 

Если вы хотите получить полный код:

 public String getContactDisplayNameByNumber(String number) { Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); String name = "?"; ContentResolver contentResolver = getContentResolver(); Cursor contactLookup = contentResolver.query(uri, new String[] {BaseColumns._ID, ContactsContract.PhoneLookup.DISPLAY_NAME }, null, null, null); try { if (contactLookup != null && contactLookup.getCount() > 0) { contactLookup.moveToNext(); name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); //String contactId = contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID)); } } finally { if (contactLookup != null) { contactLookup.close(); } } return name; } 
  • Изменение контактной информации
  • Interesting Posts

    Когда веб-служба не должна использоваться?

    Результаты поиска в Windows 10 отображаются не на том языке

    Как заменить n-ое вхождение строки с помощью sed

    Я пожарил мою материнскую плату или мой блок питания?

    Защитник Windows: отключить режим реального времени; Следить за расписанием и по требованию

    Как мне перебирать строки с помощью устройства чтения данных в C #?

    Есть ли программа, которая позволяет мне отправлять аудиовыход на микрофонный вход (реальный или виртуальный микрофон)?

    Как загрузить файл в angularjs e2e испытание protractorа

    Гик-помощь вводится глубже по иерархии зависимостей

    Можно ли ориентироваться на более старые версии iOS при использовании Xcode 4.2 и iOS 5 SDK?

    Фоновый оттенок Lollipop не влияет на кнопку

    Присоединение видео в командной строке

    Увеличивает ли скорость от 20 МГц до 40 МГц скорость беспроводной связи?

    Virtual Desktop Manager для Windows 7

    Когда я использую fabs и когда достаточно использовать std :: abs?

    Давайте будем гением компьютера.