Номера телефонов
Номера телефонов хранятся в отдельной таблице и должны запрашиваться отдельно.Для запроса таблицы телефонных номеров используйте URI, хранящийся в переменной SDK ContactsContract.CommonDataKinds.Phone.CONTENT_URI.Используйте условие WHERE, чтобы получить номера телефонов для указанного контакта.
if (Integer.parseInt(cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
// Do something with phones
}
pCur.close();
}
Выполните второй запрос к базе данных SQLite контактов Android.Телефонные номера сопоставляются с URI, хранящимся в ContactsContract.CommonDataKinds.Phone.CONTENT_URI.Идентификатор контакта хранится в таблице телефона как ContactsContract.CommonDataKinds.Phone.CONTACT_ID, а предложение WHERE используется для ограничения возвращаемых данных.
Адреса электронной почты
Запросадреса электронной почты похожи на номера телефонов.Запрос должен быть выполнен, чтобы получить адреса электронной почты из базы данных.Запросите URI, хранящийся в ContactsContract.CommonDataKinds.Email.CONTENT_URI, чтобы запросить таблицу адресов электронной почты.
Cursor emailCur = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext()) {
// This would allow you get several email addresses
// if the email addresses were stored in an array
String email = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String emailType = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
}
emailCur.close();
Как и в случае телефонного запроса, имена полей для таблицы электронной почты также хранятся в ContactsContract.CommonDataKinds.Запрос по электронной почте выполняется для URI в ContactsContract.CommonDataKinds.Email.CONTENT_URI, а предложение WHERE должно соответствовать полю ContactsContract.CommonDataKinds.Email.CONTACT_ID.Поскольку несколько адресов электронной почты могут храниться в цикле по записям, возвращаемым в курсоре.
Дополнительные учебники здесь
Для этого метода требуется Android API версии 5 или выше.