Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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_Contactscontract - Fatal编程技术网

从Android联系人数据库中搜索电话号码

从Android联系人数据库中搜索电话号码,android,contactscontract,Android,Contactscontract,我正在实现一个自动完成视图来搜索电话号码。除某些情况外,该代码工作正常 我的代码: Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsCo

我正在实现一个自动完成视图来搜索电话号码。除某些情况外,该代码工作正常

我的代码:

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE};
    String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE ?";
    String[] selectionArgs = new String[]{"%" + charSequence.toString() + "%"};
    Cursor cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
当电话号码中没有空格时,此代码工作正常。例如,如果我在“自动完成”视图中输入“123”,它可以找到像“9123456789”或“8283929383”这样的电话号码,但无法找到号码“9123456789”或“9123456789”

我甚至试着用
ContactsContract.PhoneLookup
API来实现它,但是用这个,它根本不起作用

使用contacts contract.PhoneLookupAPI编码:

String[] projection = new String[]{ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup.NUMBER, ContactsContract.PhoneLookup.TYPE};

Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(charSequence.toString()));

Cursor cursor = context.getContentResolver().query(uri, projection, null, null, ContactsContract.PhoneLookup.DISPLAY_NAME + " ASC");

非常感谢您的帮助。

请使用
contacts contract.commondatatypes.Phone.NUMBER
,而不是使用
contacts contract.commondatatypes.Phone.NORMALIZED_NUMBER
(此返回E164格式的电话号码)

而不是使用
contacts contract.commondatatypes.Phone.NUMBER
,您可以尝试使用
contacts contract.commondatatypes.Phone.NORMALIZED_NUMBER
(E164格式)@itechevo:谢谢!成功了。你可以把它贴出来作为答案,这样我就可以把它标记为已接受。