Мне нужно найти контакт по номеру телефона. Вот код, который работает для извлечения контактов. уровень Android API, который я использую 15Android: Поиск Контакт по номеру телефона
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor query = mContent.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '%" + constraint.toString() + "%'"
,null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
Я могу принести контакт, который не имеет места с телефонным номером сохранен в таблице контактов. Если номер телефона имеет пробел между ними, запрос выше не выполняется. Например, для контакта, если номер телефона сохранен как 1234567890, и когда я ищу со значением 1234, этот контакт будет восстановлен. Но не удается, если контакт сохраняется как «123 456 7890».
Подводя итог, когда я пытаюсь найти контакты, содержащие или содержащие «1234» с номером телефона, в результате следует вернуть мне контакты с номером телефона «1234567890» и «123 4567 890». Поскольку некоторые из телефонов android сохраняют номера телефонов с промежутком между ними.
Как это решить. Любая помощь приветствуется.
Добавление '%' между всеми символами вашего 'ограничения 'будет одним из вариантов – venkatKA
Короче говоря, для поиска по номеру телефона вам нужно использовать' ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER', который содержит номер телефона в ' E.164'. http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html#NORMALIZED_NUMBER –
@SarwarErfan Извините, я не могу использовать эту константу, уровень API, на котором я нахожусь, равен 15. 'ContactsContract.CommonDataKinds. Телефон.NORMALIZED_NUMBER' добавлен в API 16. – User12111111