我有一个带有国家代码的号码。我想检查联系人中是否存在该号码,但很难判断,因为我可能已经或可能没有通过国家代码存储联系人。所以,无论如何,我可以检查联系人中是否存在一个数字(带有国家代码前缀)(忽略前缀)。类似于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;
}发布于 2014-11-17 23:54:24
最后我就这样做了。
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;
}https://stackoverflow.com/questions/26983637
复制相似问题