使用电话号码搜索联系人
Posted
技术标签:
【中文标题】使用电话号码搜索联系人【英文标题】:Searching for a contact using phone number 【发布时间】:2013-01-02 17:26:24 【问题描述】:我正在开发接收来电和传入短信的广播意图的 android 应用程序。
然后它应该获取传入号码并使用传入号码对用户联系人执行搜索。
这是一个不太工作,但我有一个小问题。我让它工作,以便在联系人列表中搜索号码,如果它以 + 开头,则去除前 3 个字符并在开头放置一个 0,或者如果它不包含 +,则只进行搜索。但是,我有一个小问题,如果用户在号码中输入空格,那么应用程序找不到联系人。例如,如果我有一个保存为 07412xxxxxx
的联系人号码,而传入的号码是 07412xxxxxx
或 +447412xxxxxx
。但是,如果联系人号码保存为`07412 xxx xxxand 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、2 或 3 位数字(请参阅 here),因此在处理以 @987654327 开头的数字时,您可能需要检查更多替代方案@. @Simon 谢谢你,不知道 【参考方案1】:试试:
String selection = "REPLACE (" + ContactsContract.CommonDataKinds.Phone.NUMBER + ", \" \" , \"\" ) = ?";
见replace函数。
【讨论】:
感谢您的帮助,完美运行。我会给你赏金,但出于某种原因,我又等了 11 个小时以上是关于使用电话号码搜索联系人的主要内容,如果未能解决你的问题,请参考以下文章