从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.PhoneLookup
API编码:
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:谢谢!成功了。你可以把它贴出来作为答案,这样我就可以把它标记为已接受。