Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用电话号码搜索联系人_Android_Contacts_Android Contacts - Fatal编程技术网

Android 使用电话号码搜索联系人

Android 使用电话号码搜索联系人,android,contacts,android-contacts,Android,Contacts,Android Contacts,我正在开发一款android应用程序,它可以接收来电和短信的广播意图 然后,它应该获取传入号码,并使用传入号码对用户联系人执行搜索 这是一个较少的工作,但我有一个小问题。我让它工作,以便在联系人列表中搜索号码,如果它以+开头,去掉前3个字符并在开头加上0,或者如果它不包含+,则仅a进行搜索。然而,我有一个小问题,如果用户在号码中输入空格,那么应用程序找不到联系人。例如,如果我有一个保存为07412xxx的联系人号码,而传入号码为07412xxx或+447412xxxxxx。但是,如果联系人号码保

我正在开发一款android应用程序,它可以接收来电和短信的广播意图

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

这是一个较少的工作,但我有一个小问题。我让它工作,以便在联系人列表中搜索号码,如果它以+开头,去掉前3个字符并在开头加上0,或者如果它不包含+,则仅a进行搜索。然而,我有一个小问题,如果用户在号码中输入空格,那么应用程序找不到联系人。例如,如果我有一个保存为
07412xxx
的联系人号码,而传入号码为
07412xxx
+447412xxxxxx
。但是,如果联系人号码保存为'07412 xxx xxx
,而传入号码为
07412xxx`,则无法识别该号码,因此无法找到联系人姓名

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

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;
        }
    }
尝试:

请参阅函数。

尝试:


请参阅函数。

感谢您的帮助,工作状态非常好。我会给你赏金,但出于某种原因,我又等了11个小时。谢谢你的帮助,我的工作做得很好。我会给你奖金,但出于某些原因,我还要再等11个小时。作为一个次要问题,国际国家代码可以有1、2或3位数字(请参阅),因此在处理以
+
@Simon开头的数字时,你可能需要检查更多的备选方案。谢谢你,我不知道这是一个次要问题,国际国家代码可以有1位、2位或3位数字(请参阅),因此在处理以
+
@Simon开头的数字时,您可能需要检查更多的备选方案谢谢,我不知道
String selection = "REPLACE (" + ContactsContract.CommonDataKinds.Phone.NUMBER + ", \" \" , \"\" ) = ?";