使用电话号码搜索联系人

时间:2013-01-18 22:09:10

标签: android contacts android-contacts

我正在开发Android应用程序,它接收传入呼叫和传入文本消息的广播意图。

然后应该使用传入号码获取传入号码并对用户联系人执行搜索。

这更不用说了,但我遇到了一个小问题。我有它的工作,以便在联系人列表中搜索该号码,如果它以+开始前3个字符并在开头放0,或者如果它不包含+则进行搜索。但是,我有一个小问题,如果用户在数字中输入空格,那么应用程序找不到该联系人。例如,如果我将联系人号码保存为07412xxxxxx,则来电号码会显示为07412xxxxxx+447412xxxxxx。但是,如果联系号码保存为“07412 xxx xxx and the incoming number is 07412xxxxxx`”,则该号码无法识别,因此无法找到联系人姓名。

如何执行搜索以考虑数字格式。以下是我目前使用的代码。

public String getContactNameFromNumber(String number)
    {

        if (number.startsWith("+"))
        {
            number = "0" + number.substring(3);
        }

        String contactName = null;
        ContentResolver contentResolver = context.getContentResolver();

        Uri uri = Data.CONTENT_URI;
        String[] projection = new String[] {PhoneLookup._ID, PhoneLookup.DISPLAY_NAME};
        String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?";
        String[] selectionArgs = { number };
        Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgs, null);

        if (cursor.moveToFirst())
        {

            contactName = cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME));
            cursor.close();
            return contactName;
        }
        else
        {
            cursor.close();
            return null;
        }
    }

1 个答案:

答案 0 :(得分:1)

尝试:

String selection = "REPLACE (" + ContactsContract.CommonDataKinds.Phone.NUMBER + ", \" \" , \"\" ) = ?";

请参阅replace功能。