Несколько недель назад я задал точно такой же вопрос здесь. Сначала я думал, что ответы решили мою проблему, но этого не произошло. Я просто не заметил, что не смог решить свою проблему с этими ответами.
Однако теперь у меня есть:
final Cursor phoneCursor = context.getContentResolver().query(Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode("'" + incomingNumber + "'")), null, null, null, null);
phoneCursor.moveToFirst();
String lookupString = phoneCursor.getString(phoneCursor.getColumnIndex(PhoneLookup.LOOKUP_KEY));
final Cursor dataCursor = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.LOOKUP_KEY + "=" + "'" + lookupString + "'", null, null);
dataCursor.moveToFirst();
Log.e("smn", "display_name: " + dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)));
Log.e("smn", "nickname: " + dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DATA1)));
Результат выглядит так:
08-14 17:41:02.106: ERROR/smn(20146): display_name: Tom Tasche
08-14 17:41:02.106: ERROR/smn(20146): nickname: null
Этот ответ сказал мне, что псевдонимы хранятся в таблице данных, но хотя я запрашивая таблицу данных, я не получаю псевдоним контакта, сохраненный в моей адресной книге.
Я уже пробовал по-другому: вставил новый псевдоним для этого контакта. И это сработало. Итак, ники вроде работают. Вдобавок я распечатал все поля, сохраненные в таблице данных, опять же, безуспешно.
Любые идеи? Может я что-то совершенно не так делаю, но пока не вижу в чем проблема ...
Спасибо за вашу помощь
Том