检索具有电话号码的联系人列表,如拨打的号码

时间:2011-10-06 09:37:17

标签: android cursor

我正在尝试检索手机号码,其电话号码从拨打的号码开始。例如,如果我输入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 :(得分:0)

System.out.print("1-2-3".replaceAll("\\-", ""));

答案 1 :(得分:0)

“我的问题不在于已拨打的号码。即使我拨打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");

这是一种黑客攻击,但你可以使用它,不会在其他任何地方造成问题。