使用PhoneNumberUtils.compare()检查联系人中是否存在号码

时间:2014-11-17 23:04:21

标签: java android

我有一个国家代码的号码。我想检查联系人中是否存在该号码,但是很难说,因为我可能会或可能不会将联系人存储在国家/地区代码中。那么无论如何我可以检查联系人中是否存在一个数字(带有国家代码前缀)(忽略前缀。类似于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;
}

1 个答案:

答案 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;
}