private fun exportToApp() { thread { var count=0 for (contacti in contactList){ if(contacti.isChecked){ // //创建联系人实例:使用 ContentResolver 来获取 ContactsContract.Contacts 类的实例。 val contentResolver = getContentResolver() val contact = ContentValues() //添加联系人姓名:使用 put 方法来添加联系人的姓名。 contact.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contacti.name) //添加联系人电话号码 contact.put("phone",contacti.phone) //添加联系人邮箱:使用 ContactsContract.CommonDataKinds.Email 类来添加邮箱,并将其与联系人关联起来。 contact.put("email", contacti.email) //插入联系人记录:使用 ContentResolver 的 insert 方法将联系人记录插入到通讯录中。 // val uri = Uri.parse(ContactsContract.Contacts.CONTENT_URI.toString()) val uri:Uri? = contentResolver.insert(ContactsContract.RawContacts.CONTENT_URI, contact) // contentResolver.insert(uri,contact) count++ } } runOnUiThread { Toast.makeText(this,"已导出${count}位联系人!",Toast.LENGTH_LONG).show() } } finish() }这段代码运行后不报错,但联系人没有成功加入,请分析原因,并给出正确代码
时间: 2024-01-19 15:02:09 浏览: 62
这段代码中需要添加联系人电话号码和邮箱的部分有误,应该使用 ContactsContract.CommonDataKinds.Phone 和 ContactsContract.CommonDataKinds.Email 类来添加电话号码和邮箱,并将其与联系人关联起来。另外,需要在插入联系人记录之前先插入 RawContacts 记录。正确的代码应该如下所示:
```
private fun exportToApp() {
thread {
var count = 0
val contentResolver = getContentResolver()
for (contact in contactList) {
if (contact.isChecked) {
val rawContact = ContentValues()
rawContact.put(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
rawContact.put(ContactsContract.RawContacts.ACCOUNT_NAME, null)
val rawContactUri = contentResolver.insert(ContactsContract.RawContacts.CONTENT_URI, rawContact)
val contactData = ContentValues()
contactData.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactUri?.lastPathSegment)
contactData.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
contactData.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contact.name)
contentResolver.insert(ContactsContract.Data.CONTENT_URI, contactData)
val phoneData = ContentValues()
phoneData.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactUri?.lastPathSegment)
phoneData.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
phoneData.put(ContactsContract.CommonDataKinds.Phone.NUMBER, contact.phone)
contentResolver.insert(ContactsContract.Data.CONTENT_URI, phoneData)
val emailData = ContentValues()
emailData.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactUri?.lastPathSegment)
emailData.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
emailData.put(ContactsContract.CommonDataKinds.Email.ADDRESS, contact.email)
contentResolver.insert(ContactsContract.Data.CONTENT_URI, emailData)
count++
}
}
runOnUiThread {
Toast.makeText(this, "已导出${count}位联系人!", Toast.LENGTH_LONG).show()
}
}
finish()
}
```
阅读全文