联系电子邮件Android

问题描述 投票:0回答:1

第一次尝试在 Android 手机上获取联系人列表。 以下代码有效,并且列表已填充。 唯一的问题是,它不显示电子邮件地址,而是显示电话号码。 无法弄清楚这一点。

private fun getContacts() {
    arrayList.clear()

    val cursor = this.contentResolver
        .query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            arrayOf(
                ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY,
                ContactsContract.CommonDataKinds.Phone.NUMBER,
                ContactsContract.CommonDataKinds.Photo.PHOTO_URI,
                ContactsContract.CommonDataKinds.Email.ADDRESS,

            ),null,null,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY
        )

    while (cursor!!.moveToNext()) {

        val contactID = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.CONTACT_ID))
        val contactName = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY))
        val contactNumber = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER))
        val photo_uri = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.PHOTO_URI))
        val contactEmail = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Email.ADDRESS))
        
        val obj = ContactModel()
        obj.contid=contactID
        obj.contname = contactName
        obj.contnumber = contactNumber
      
        if (contactEmail != null) {
            obj.contemail=contactEmail
        } else {
            obj.contemail="No Email"
        }

        if(photo_uri != null){
            obj.contPhoto = MediaStore.Images.Media.getBitmap(contentResolver,Uri.parse(photo_uri))
        }

        arrayList.add(obj)

    }

    rcvAdapter.notifyDataSetChanged()
    cursor.close()
}

感谢对此的任何帮助。

android kotlin
1个回答
0
投票

问题似乎源于这样一个事实:电话内容提供商(您正在查询)可能包含每个联系人的多个条目,例如电话号码和电子邮件,但您只查询查询中的电话号码。因此,电子邮件地址字段未正确填充,并且列表显示电话号码而不是电子邮件地址。

要解决此问题,您应该单独向电子邮件内容提供商查询电子邮件,并将电子邮件地址与正确的联系人相关联。

© www.soinside.com 2019 - 2024. All rights reserved.