获取来电号码的显示名称

时间:2013-07-14 13:30:20

标签: android

要获取来电号码,我们使用

  TeleponyManager.EXTRA_INCOMING_NUMBER

但如果已将其保存在联系人数据库中,则如何获取来电的显示名称。

2 个答案:

答案 0 :(得分:3)

  Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(newSender));
  Cursor cursor = getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, newSender, null, null );
  if(cursor.moveToFirst()){
        newSender =      cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
  }
  cursor.close();

其中newSender是来电号码

答案 1 :(得分:0)

在广播接收器中创建一个名为getContactDisplayNamebyNumber的方法,然后将该传入的数字作为参数传递给方法。 该方法将检查该号码是否与您的手机中的联系人名称一起保存,如果是,它将返回联系人姓名,否则将返回未知号码

查看此代码

   public String getContactDisplayNameByNumber(String number,Context context) {
    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
    name = "Incoming call from";

    ContentResolver contentResolver = context.getContentResolver();
    Cursor contactLookup = contentResolver.query(uri, null, null, null, null);

    try {
        if (contactLookup != null && contactLookup.getCount() > 0) {
            contactLookup.moveToNext();
            name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
            // this.id =
            // contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.CONTACT_ID));
            // String contactId =
            // contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID));
        }else{
            name = "Unknown number";
        }
    } finally {
        if (contactLookup != null) {
            contactLookup.close();
        }
    }

    return name;
}

Vinod Dirishala's GitHub Repository

获取代码

快乐编码:D:D