Получить список контактов, имеющих номер телефона, например, набранный номер - PullRequest
1 голос
/ 06 октября 2011

Я пытаюсь получить телефонные контакты, имеющие номер телефона, начиная с набираемого номера. Например, если я введу 123, я хотел бы получить все контакты, имеющие контактный номер, начиная с 123. Для этого я использую следующий код:

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    Cursor cursor = this.getContentResolver().query(
        uri,
        new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME },
        ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + dialledNumber + "%'", null,
        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");

Проблема с этим кодом заключается в том, что если я сохранил контакт, такой как + 919-9 .... и другой, например +9199 ...., когда я набираю +9199, я не могу получить оба контакта. Я хотел бы экранировать символ "-" при запросе контактов. Как я мог это сделать? Пожалуйста помоги. Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

"Моя проблема не с набранным номером. Даже если я набираю 1234 или 123-4, мне нужны все контакты с номером телефона, начинающимся с 1234. Но здесь, если я набираю 1234, извлекаются только контакты, начинающиеся с 1234, а не123-4. "

, потому что вы напрямую проверяете number.try, чтобы ваша строка набрала dialledNumber таким образом, чтобы она выглядела как 123-456-7890, а затем запросите обе эти строки, например:

Если предположить,

String dialledNumber="1234";
String dialledNumberFormatted="123-4"; // Create this on your own from dialledNumber you get

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    Cursor cursor = this.getContentResolver().query(
        uri,
        new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME },
        ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + dialledNumber + "%'" +" OR "+ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + dialledNumberFormatted + "%'", null,
        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");

Это тип взлома, но вы можете использовать его, не создавая проблем для вас где-либо еще.

0 голосов
/ 06 октября 2011
System.out.print("1-2-3".replaceAll("\\-", ""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...