Я пытаюсь запросить отображаемое имя контакта:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQ_CODE_PICK_CONTACT:
if (resultCode == Activity.RESULT_OK) {
Uri contactUri = data.getData();
ContentResolver cr = getActivity().getContentResolver();
Cursor c = cr.query(contactUri, null, null, null, null);
if (c != null && c.moveToFirst()) {
//get the contact name
}
}
break;
}
}
Теперь вот в чем проблема:
Для некоторых контактов курсор возвращается пустым, и я не понимаю, почему. Проверил значение contactUri
, выглядит так: content: //com.android.contacts/data/3032
Uri выглядит одинаково для всех типов контактов, которые я пробовал - facebook, google, phone и т. Д.
Для некоторых контактов курсор возвращается с результатом, и это хорошо, и я могу извлечь имя. Но для других он почему-то пуст, хотя ContentUri точно такой же, он был создан из Intent.getData ().
Вот несколько фактов, которые могут иметь какое-то отношение к этой странной проблеме:
Все контакты с пустым курсором - это контакты facebook. Ури выглядит так, как показано выше.
Не все контакты facebook вызывают это: у меня есть HTC One X, который в телефонной книге я могу «связать» между контактами, если ОС обнаружит связь между ними (скажем, если обнаружит аналогичный номер телефона для учетной записи Gmail и учетной записи Facebook). , предлагает мне «связать» их). Только контакты facebook, которые НЕ были «связаны», возвращаются пустыми.
Прямо сейчас у меня нет идей. Кто-нибудь сталкивался с этим раньше?
Заранее спасибо.