с помощью диспетчера контактов в Android - PullRequest
0 голосов
/ 24 июня 2010

У меня есть приложение, которое показывает полученные сообщения в виде тоста через BroadcastReceiver. В настоящее время я использую метод SmsMessage.getOriginatingAddress (), который дает мне номер отправителя, как его изменить, чтобы получить соответствующее имя отправителя, если оно хранится в контактах?

1 Ответ

1 голос
/ 24 июня 2010

Вам потребуется запросить контакты для остальных данных.

Первый запрос идентификатора контакта с использованием номера телефона.

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

Затем запрос имени контакта с помощьюидентификатор из первого запроса.

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

Вы можете каким-то образом объединить эти два запроса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...