Не удается получить контактную информацию от некоторых контактов

Я вырвал большую часть своих волос, и мне действительно нужна помощь, прежде чем я полностью осмелею.

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

Но это происходит только для некоторых контактов, а не для всех. Код примерно такой:

Выберите контакт:

Intent contactPicker = new Intent(Intent.ACTION_PICK, contactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(contactPicker, REQ_PICK_CONTACT);

Извлечь идентификатор (уведомление getData().getLastPathSegment():

onContactForImportPicked(intent.getData().getLastPathSegment());

а затем я пытаюсь получить этот контакт:

String[] fields = new String[] {
    ContactsContract.CommonDataKinds.Phone.NUMBER,
    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY
};

Cursor cursor = content.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
   fields,
   ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[] { id }, // SEE BELOW
   null);

На этом этапе многие контакты извлекаются правильно, но многие из них также не существуют. cursor.getCount() == 0. В разделе «СМ. НИЖЕ» выше я пробовал различные другие поля, ссылки Contact._ID, Phone._ID и т. д. и т. д.

Любая идея, почему некоторые контакты не извлекаются с помощью этого метода?


person simendsjo    schedule 25.10.2014    source источник


Ответы (1)


Когда я использую ваш код, я даже не получаю контакт, который я выбрал правильно. Данные намерения содержат URI нужных данных, поэтому вы можете использовать их напрямую.

Пытаться --

 Cursor cursor = content.query(data.getData(),
                fields,
                null,
                null,
                null);
person iagreen    schedule 26.10.2014
comment
Спасибо. Намного проще. Применяется та же проблема. Курсор пустой : getCount() == 0. Странно, ведь я только что выбрал контакт.. - person simendsjo; 26.10.2014