使用 phone 号码获取联系人姓名
Getting ContactName using phone number
我正在创建一个 activity,其中列出了用户最近的呼叫。要求是当用户接到电话时,phone number
和 contact name
存储在 DB 中,稍后显示在 activity 中。要检索联系人姓名,phone 号码与用户联系人列表中的联系人匹配。我正在使用以下代码获取联系人姓名。
(以下代码查询联系人数据库并找到与输入的 phone 号码的匹配项)
String getContactDisplayNameByNumber(String number) {
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
String name = "";
Cursor contactLookup = context.getContentResolver().query(uri, new String[]{
ContactsContract.PhoneLookup.DISPLAY_NAME}, null, null, null);
try {
if (contactLookup != null && contactLookup.moveToNext()) {
name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
Log.v("ranjapp", "Name is " + name + " Number is " + number);
}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}
return name;
}
现在的问题是 phone 号码在联系人列表中保存为“1234567891”,而从来电中检索到的 phone 号码是“01234567891”(前缀为 0)。
由于来电号码前缀为 0,因此该号码与联系人列表中的号码不匹配。
也可能有其他可能性,来电号码可能有国家代码前缀,而保存的联系人没有。
我如何在这些场景中进行匹配。
(我知道 PhoneNumberUtils.compare()
但无法在提到的代码中应用它)。
问题是没有使用 phone 号码作为输入调用该方法。无论数字如何,即前缀 +91 或 0,它都有效。更正代码如下:
Bundle bundle = intent.getExtras();
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
String name=getContactDisplayNameByNumber(number);
我正在创建一个 activity,其中列出了用户最近的呼叫。要求是当用户接到电话时,phone number
和 contact name
存储在 DB 中,稍后显示在 activity 中。要检索联系人姓名,phone 号码与用户联系人列表中的联系人匹配。我正在使用以下代码获取联系人姓名。
(以下代码查询联系人数据库并找到与输入的 phone 号码的匹配项)
String getContactDisplayNameByNumber(String number) {
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
String name = "";
Cursor contactLookup = context.getContentResolver().query(uri, new String[]{
ContactsContract.PhoneLookup.DISPLAY_NAME}, null, null, null);
try {
if (contactLookup != null && contactLookup.moveToNext()) {
name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
Log.v("ranjapp", "Name is " + name + " Number is " + number);
}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}
return name;
}
现在的问题是 phone 号码在联系人列表中保存为“1234567891”,而从来电中检索到的 phone 号码是“01234567891”(前缀为 0)。 由于来电号码前缀为 0,因此该号码与联系人列表中的号码不匹配。
也可能有其他可能性,来电号码可能有国家代码前缀,而保存的联系人没有。
我如何在这些场景中进行匹配。
(我知道 PhoneNumberUtils.compare()
但无法在提到的代码中应用它)。
问题是没有使用 phone 号码作为输入调用该方法。无论数字如何,即前缀 +91 或 0,它都有效。更正代码如下:
Bundle bundle = intent.getExtras();
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
String name=getContactDisplayNameByNumber(number);