使用电话号码获取ContactName



我正在创建一个活动,列出用户最近的调用。要求是当用户接收到呼叫时,phone numbercontact name存储在DB中,以便稍后在活动中显示。要检索联系人姓名,请将电话号码与用户联系人列表中的联系人相匹配。我使用以下代码获取联系人姓名。

(下面的代码查询联系人数据库并找到与输入的电话号码匹配的号码)

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

现在的问题是,电话号码在联系人列表中保存为"1234567891",而从来电中检索到的电话号码是"01234567891"(前缀为0)。由于传入号码前缀为0,因此该号码与联系人列表中的号码不匹配。

也可能有其他可能性,来电号码可能有国家代码前缀,而保存的联系人没有。

在这些情况下我该如何匹配。

(我知道PhoneNumberUtils.compare(),但无法将其应用于上述代码中)。

问题是没有用电话号码作为输入来调用该方法。它的工作方式与数字无关,即前缀为+91或0。更正代码如下:

Bundle bundle = intent.getExtras();
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
String name=getContactDisplayNameByNumber(number);

相关内容

  • 没有找到相关文章

最新更新