получить имя контакта из контактов в Android - PullRequest
0 голосов
/ 08 ноября 2011

У меня проблема с получением имени контакта из контактов.Я подаю заявку на СМС, и, как вы знаете, когда вы получаете СМС, номер, который вы получаете, сопровождается кодом страны, но если вы сохранили тот же номер в своей памяти без кода страны, как бы вы его нашли?

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

Вот мой код:

String[] projection = new String[] {
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER };

    // encode the phone number and build the filter URI
    Uri contactUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(number));

    // query time
    Cursor c = getContentResolver().query(contactUri, projection, null,
            null, null);

    // if the query returns 1 or more results
    // return the first result
    if (c.moveToFirst()) {
        String name = c.getString(c
                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        return name;
    }

    // return the original number if no match was found
    return number;

1 Ответ

0 голосов
/ 10 ноября 2011

Вы должны попытаться использовать SQLite LIKE в своем выборе. Я не проверял это, но вы поймете идею. Метод принимает номер (адрес) из SMS и пытается сопоставить его с номером из Phone.NUMBER.

  private void whateverYouCallMe(String numberWithCode) {

  String[] projection = new String[] {
        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
        ContactsContract.CommonDataKinds.Phone.NUMBER };

  String selection = Phone.NUMBER + " LIKE '%?%'" // numberWithCode should supplement the ? 
  final String[] SELECTION_ARGS = { numberWithCode };

  Cursor c = getContentResolver().query(contactUri, projection, selection, SELECTION_ARGS, null);

  //etc
  }
...