0

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

  TeleponyManager.EXTRA_INCOMING_NUMBER

但是当它已经保存在联系人数据库中时如何获取来电的显示名称。

4

2 回答 2

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 是传入的电话号码

于 2013-07-14T13:42:06.317 回答
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 的 GitHub 存储库获取代码

快乐编码 :D :D

于 2016-12-18T14:23:51.267 回答