Intereting Posts
Панель просмотра студии Android не отображается в ActionBar? Мигает экран при использовании веб-просмотра со вспышкой Android: нужно ли включать службы Google Play для использования GCM? Как преобразовать длину геодезической + широту в двойную? ViewPager setCurrentItem Slide Предназначение камеры для Android с кадрированием Как настроить переключатель предпочтений списка Неудачная ошибка связи при инициализации Myo hub на Android Android Создание гибкого XML, состоящего из нескольких растровых изображений Есть ли способ, чтобы элементы пользовательского интерфейса слегка перекрывались (один поверх другого) без использования абсолютных макетов? Я получил ошибку при открытии xml-файла в eclipse Закрыть всплывающее окно кнопкой «Назад» Отправка php-массива с помощью POST-андроида Как проверить, может ли какое-либо намерение быть обработано из какой-либо деятельности? Несколько файлов dex определяют <мой пакет> / BuildConfig, не могут найти причину:

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

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

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

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

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

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

Solutions Collecting From Web of "Поиск по номеру телефона"

Вы должны взглянуть на рекомендуемого поставщика 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; }