我有一个国家代码的号码。我想检查联系人中是否存在该号码,但是很难说,因为我可能会或可能不会将联系人存储在国家/地区代码中。那么无论如何我可以检查联系人中是否存在一个数字(带有国家代码前缀)(忽略前缀。类似于PhoneNumberUtils.compare())
这是代码,但如果我没有使用国家/地区代码存储该号码,则不会返回true。
public boolean contactExists(Context context, String number) {
Uri lookupUri = Uri.withAppendedPath(
ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(number));
String[] mPhoneNumberProjection = { ContactsContract.PhoneLookup._ID,
ContactsContract.PhoneLookup.NUMBER, ContactsContract.PhoneLookup.DISPLAY_NAME };
Cursor cur = context.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
try {
if (cur.moveToFirst()) {
return true;
}
} finally {
if (cur != null)
cur.close();
}
return false;
}
答案 0 :(得分:1)
我最终这样做了。
public boolean contactExists(Context context, String number, ContentResolver contentResolver) {
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.
CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
while (phones.moveToNext()){
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if(PhoneNumberUtils.compare(number, phoneNumber)){
return true;
}
}
return false;
}