Я не знаю, может ли SimpleCursorAdapter
сделать это, поскольку я не использовал его, поэтому позвольте мне рассказать вам, как адреса электронной почты можно загрузить простым запросом.
IДля загрузки электронной почты и телефонных номеров использовался следующий метод, поэтому код может быть не оптимальным.
Прежде всего, адреса электронной почты хранятся в общем формате ContactsContract.Data.DATA1
столбец данных, но этот же столбец может также использоваться для других типов данных (например, для телефонных номеров).Вот почему я использовал следующую проекцию:
private val PROJECTION =
arrayOf(
ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.DISPLAY_NAME_PRIMARY,
ContactsContract.Data.DATA1,
ContactsContract.Data.MIMETYPE
)
А затем я запросил ее, как показано ниже, и обработал данные по очереди, каждый раз проверяя тип data1
MIME:
contentResolver.query(
ContactsContract.Data.CONTENT_URI,
PROJECTION,
null,
null,
null
)?.use { cursor ->
val idxId = cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID)
val idxDisplayNamePrimary = cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME_PRIMARY)
val idxData1 = cursor.getColumnIndex(ContactsContract.Data.DATA1)
val idxMimeType = cursor.getColumnIndex(ContactsContract.Data.MIMETYPE)
while (cursor.moveToNext()) {
val id = cursor.getLong(idxId)
val name: String? = cursor.getString(idxDisplayNamePrimary)
val data1: String? = cursor.getString(idxData1)
val mimeType: String? = cursor.getString(idxMimeType)
if (mimeType == ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) {
// e-mail was found and loaded into data1 - do something with it here
}
}
}
Я уверен, что, возможно, есть лучший способ.
Обновление # 1
Некоторые документы здесь:
Обновление # 2
Как видно из документов или кода, ContactsContract.CommonDataKinds.Email.ADDRESS
балловв столбец ContactsContract.Data.DATA1
.