Я написал следующие методы для программного создания контактов в моем приложении
override fun addContactToPhone() {
val ops = ArrayList<ContentProviderOperation>()
val rawContactId = ops.size
try {
ops.add(
ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, null)
.withValue(RawContacts.ACCOUNT_NAME, null)
.build()
)
} catch (e: Exception) {
Log.e("Add", "could not find account_type null")
return
}
addContactNameInfo(ops, rawContactId)
addContactEmailInfo(ops, rawContactId)
addContactInfo(ops, rawContactId)
}
private fun addContactInfo(
ops: ArrayList<ContentProviderOperation>,
rawContactId: Int
) {
ops.add(
ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply {
withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, sPhoneNr)
withValue(
ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_WORK
)
}.build()
)
}
private fun addContactEmailInfo(
ops: ArrayList<ContentProviderOperation>,
rawContactId: Int
) {
ops.add(
ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply {
withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
withValue(ContactsContract.CommonDataKinds.Email.DATA, sEmail)
}.build()
)
}
private fun addContactNameInfo(
ops: ArrayList<ContentProviderOperation>,
rawContactId: Int
) {
ops.add(
ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply {
withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE
)
// Name of the person
withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, sLastname)
withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, sFirstname)
withValue(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME, sMiddleName)
}.build()
)
}
И у меня есть несколько вопросов над правильными данными, которые я должен использовать с поставщиком контактов:
- Как получить переменную contactRawId?Верна ли моя идея?
- В каком формате я должен отправить телефон?Если у меня есть телефонная строка типа «+7 (960) 001-02-03» или «+34 (960) 001-02-03», какие символы я должен из нее вырезать?
- Нужно лиукажите DISPLAY_NAME, или он будет автоматически сформирован из FAMILY_NAME, MIDDLE_NAME, GIVEN_NAME
Благодарим Вас за помощь