gpt4 book ai didi

java - 无法检测现有电话号码

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:35 25 4
gpt4 key购买 nike

我想查看联系人数据库中是否存在联系人。我想出了这段代码:

 public static boolean contactExists(Activity _activity, 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 = _activity.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
try {
if (cur.moveToFirst()) {
return true;
}
} finally {
if (cur != null)
cur.close();
}
return false;
}

但它总是给我 false,设备上存在联系人。此外,我已将权限集成到 list 中。

最佳答案

几个小时后我发现了错误,基本上在某些设备上可能会发生上面的代码不起作用的情况。要 100% 确定您需要使用此代码:

 public String get_name() {

ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);

if (cur.getCount() > 0) {

while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

System.out.println("name : " + name + ", ID : " + id);
if (name.equals(number)) {
title_holder = name;
break;
}else{
title_holder = number;
break;
}

}
}
}
return title_holder;
}

如您所见,它列出了设备中的所有联系人,您可以简单地检查它是否与您提供的号码匹配。

更简单的解决方案:

 String myPhone = getCallName.substring(16, getCallName.length() - 4);

if (!myPhone.matches("^[\\d]{1,}$")) {
myPhone = context.getString(R.string.withheld_number);
} else if (listDir.get(i).getUserNameFromContact() != myPhone) {
myPhone = listDir.get(i).getUserNameFromContact();
}

关于java - 无法检测现有电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36829431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com