在android中使用联系人管理器

时间:2010-06-24 11:20:27

标签: android

我有一个应用程序,通过BroadcastReceiver将收到的消息显示为Toast。我目前正在使用SmsMessage.getOriginatingAddress()方法,它给出了发件人的编号,如果存储在联系人中,如何修改它以获取发件人的相应名称?

1 个答案:

答案 0 :(得分:1)

您需要查询联系人以获取其余数据。

首先使用电话号码查询联系人ID。

Cursor cursor = context.getContentResolver().query(
    Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, address),
    new String[] { Contacts.Phones.PERSON_ID }, null, null, null);

if (cursor != null) {
  try {
    if (cursor.getCount() > 0) {
      cursor.moveToFirst();
      Long id = Long.valueOf(cursor.getLong(0));
      if (Log.DEBUG) Log.v("Found person: " + id);
      return (String.valueOf(id));
    }
  } finally {
    cursor.close();
  }
}

然后使用第一个查询中的id查询联系人姓名。

    Cursor cursor = context.getContentResolver().query(
    Uri.withAppendedPath(Contacts.People.CONTENT_URI, id),
    new String[] { PeopleColumns.DISPLAY_NAME }, null, null, null);
if (cursor != null) {
  try {
    if (cursor.getCount() > 0) {
      cursor.moveToFirst();
      String name = cursor.getString(0);
      if (Log.DEBUG) Log.v("Contact Display Name: " + name);
      return name;
    }
  } finally {
    cursor.close();
  }
}

您可以将这两个查询somehow.

组合在一起