Извлечение номеров из контактов с помощью запроса средства разрешения контента - особый случай - PullRequest
1 голос
/ 02 декабря 2011

Я пытаюсь запросить номер телефона, хранящийся в базе данных контактов Android.

Я предоставляю строку ввода для сравнения, и мне нужен запрос, чтобы выбрать только те строки, которые соответствуют этой строке ввода.

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

Например;если сохраненное число (944) 6-129-337, запрос должен сравнивать входную строку с 9446129337, а не с (944) 6-129-337.

Ниже приведен код, с которым я запрашиваюdb и извлеките числа.

            contactCursor = getContentResolver().query(uri, projection,
            ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND " +
            ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE ? ",new String[] { input_string }, null);

Проблема, с которой я здесь сталкиваюсь, заключается в том, что он просто выполняет простой поиск в каждом поле телефонного номера без внутреннего удаления (с помощью regexp или изменения запроса?) специальных символов.

Я не знаю, как это сделать, очистив специальные символы внутри запроса.Любая помощь в этом отношении, которая помогла бы мне решить эту проблему, будет высоко оценена

Спасибо, Anees

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Как хак, который может работать на вас ... вы можете передавать свой номер, используя подстановочные знаки между каждой цифрой, а затем повторно фильтровать результаты в своем коде Java ... например, ... LIKE '%9%4%4%6%1%2%9%3%3%7%' ... может вернуть очень мало результатовв том числе (944) 6-129-337 и (возможно) +1 (944) 612-9337;но вы можете собрать эти результаты, вырезать нецифровые значения в вашем собственном коде и сравнить их.Однако, если у вас очень короткие строки поиска, количество «ложноположительных» попаданий будет намного больше.К сожалению, я не проверял это с системой контента Android, поэтому вполне вероятно, что вы можете переполнить допустимое количество символов подстановки или подобное: - (

0 голосов
/ 07 марта 2013

Используйте это

 Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/%915894%");

Возврат только ваша потребность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...