If你提供一个非标准化电话号码到 PhoneLookup.CONTENT_FILTER_URI 那么它将是在两个位置匹配在电话号码的数据记录表中。
1 match for number with column "number" in record.
1 match for normalized_number with column "normalized_number" in record.
If你提供number = "+49177123456"
then 数字 == 归一化数字 .
In 这个案例PhoneLookup.CONTENT_FILTER_URI 将仅搜索 in the “标准化数字”列的电话表。
您也可以使用CommonDataKinds.Phone而不是电话查找。
这样,无论提供的电话号码是否标准化,您都不会得到重复的结果:
String number = "0177123456";
Uri uri = Uri.withAppendedPath(android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI,Uri.encode(number));
Cursor rcursor = getContentResolver().query(uri,
new String[] { ContactsContract.CommonDataKinds.Phone.CONTACT_ID },
null,null,null);
我猜 PhoneLookup 的奇怪行为是一个错误。
But 也许 PhoneLookup 性能更高比 CommonDataKinds.Phone:
类概述:[...] 该查询经过高度优化。http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html
CommonDataKinds.Phone 没有这样的声明。