背景:我有一个二维码 scanner 应用程序,可以扫描联系人信息.扫描后,用户可以添加或共享联系人.我如何(如果可以)共享到另一个应用程序?
我在这里有这个代码来添加联系意图:
fun createContactIntent(
name: String,
phones: Map<Int, String>,
emails: Map<Int, String>,
jobTitle: String,
organization: String,
addresses: List<String>,
urls: List<String>
): Intent {
val data = ArrayList<ContentValues>()
val intent = Intent(ContactsContract.Intents.Insert.ACTION).apply {
type = ContactsContract.Contacts.CONTENT_TYPE
putExtra(ContactsContract.Intents.Insert.NAME, name)
putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobTitle)
putExtra(ContactsContract.Intents.Insert.COMPANY, organization)
}
addresses.forEach {
val row = ContentValues()
row. Put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
row. Put(ContactsContract.CommonDataKinds.SipAddress.SIP_ADDRESS, it)
data. Add(row)
}
urls.forEach {
val row = ContentValues()
row. Put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE)
row. Put(ContactsContract.CommonDataKinds.Website.URL, it)
data. Add(row)
}
emails.forEach{ (type, address) ->
val row = ContentValues()
row. Put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
row. Put(ContactsContract.CommonDataKinds.Email.ADDRESS, address)
row. Put(ContactsContract.CommonDataKinds.Email.TYPE, type)
data. Add(row)
}
phones.forEach { (type, phone) ->
val row = ContentValues()
row. Put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
row. Put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
row. Put(ContactsContract.CommonDataKinds.Phone.TYPE, type)
data. Add(row)
}
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, data)
return intent
}
它工作得很好,但我如何通过共享意向共享联系信息?