Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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_Android Contacts_Android Cursor - Fatal编程技术网

Android 按(标准化)电话号码查询联系人

Android 按(标准化)电话号码查询联系人,android,android-contacts,android-cursor,Android,Android Contacts,Android Cursor,我真的很惊讶我在任何地方都找不到答案。这就是问题所在 ContentResolver resolver = getContentResolver(); String[] columns = new String[]{Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER }; String where = Phone.NUMBER+"=?"; String[] params = new String[] {"777 777 7777"}; Curs

我真的很惊讶我在任何地方都找不到答案。这就是问题所在

ContentResolver resolver = getContentResolver();

String[] columns = new String[]{Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER };
String where = Phone.NUMBER+"=?";
String[] params = new String[] {"777 777 7777"};
Cursor cursor = resolver.query(Phone.CONTENT_URI, columns, where, params, null);    

while (cursor.moveToNext()) { /* So on....*/
当params中的电话号码格式为“7777777777”时,我没有记录。当它是“777-777-7777”时,它会得到记录。更糟糕的是,TelephonyManager.EXTRA_INCOMING_NUMBER给我的号码是“7777”。如何查询此电话号码?文件上说,Phone.NUMBER是用户输入它的方式。嗯,那对我没有任何好处

试试这个:

 Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber));        
 Cursor cs= context.getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME},null,null,null);

 if(cs.getCount()>0)
    contactName=cs.getString(cs.getColumnIndex(PhoneLookup.DISPLAY_NAME));

cs.close();
编辑(根据您的评论)

试试这个:

 Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber));        
 Cursor cs= context.getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME},null,null,null);

 if(cs.getCount()>0)
    contactName=cs.getString(cs.getColumnIndex(PhoneLookup.DISPLAY_NAME));

cs.close();
编辑(根据您的评论)


非常感谢。最后我用了这个:String phoneNumber=“777 777 7777”;Uri=Uri.withAppendedPath(Phone.CONTENT\u FILTER\u Uri,Uri.encode(phoneNumber));String[]columns=新字符串[]{Phone.CONTACT\u ID,Phone.DISPLAY\u NAME,Phone.NUMBER};Cursor Cursor=resolver.query(uri、列、null、null、null);非常感谢。后续问题:这个查询非常慢,需要1300毫秒才能在有4个联系人的模拟器中执行。你知道有什么办法可以加快速度吗?当我联系了数百个联系人时,我很担心。谢谢!最后我用了这个:String phoneNumber=“777 777 7777”;Uri=Uri.withAppendedPath(Phone.CONTENT\u FILTER\u Uri,Uri.encode(phoneNumber));String[]columns=新字符串[]{Phone.CONTACT\u ID,Phone.DISPLAY\u NAME,Phone.NUMBER};Cursor Cursor=resolver.query(uri、列、null、null、null);非常感谢。后续问题:这个查询非常慢,需要1300毫秒才能在有4个联系人的模拟器中执行。你知道有什么办法可以加快速度吗?当我接触到数百个联系人时,我很担心。