在Android中通过短信发送vCard时,是否可以通过编程方式指定收件人的电话号码?

在Android中通过短信发送vCard时,是否可以通过编程方式指定收件人的电话号码?,android,kotlin,sms,mms,vcf-vcard,Android,Kotlin,Sms,Mms,Vcf Vcard,所以在我的应用程序中,我有一个电话号码和一个电话联系人的URI。当用户按下一个按钮时,我想打开用户的短信应用程序,将给定的电话号码设置为信息接收者,并将电话联系人作为vCard连接,其中包含一条预填充的短消息 我遵循的是向指定的电话号码发送预设消息,以及以编程方式将vCard附加到文本消息,它们可以独立工作,但放在一起就不起作用。也就是说,我可以让我的应用程序打开包含我指定的收件人和邮件的短信应用程序,或者让我的应用程序打开包含vCard和预填充邮件的短信应用程序,但用户必须手动选择收件人 举例

所以在我的应用程序中,我有一个电话号码和一个电话联系人的URI。当用户按下一个按钮时,我想打开用户的短信应用程序,将给定的电话号码设置为信息接收者,并将电话联系人作为vCard连接,其中包含一条预填充的短消息

我遵循的是向指定的电话号码发送预设消息,以及以编程方式将vCard附加到文本消息,它们可以独立工作,但放在一起就不起作用。也就是说,我可以让我的应用程序打开包含我指定的收件人和邮件的短信应用程序,或者让我的应用程序打开包含vCard和预填充邮件的短信应用程序,但用户必须手动选择收件人

举例说明:

test_button.setOnClickListener {
    val phoneNumber = "9828675309"
    val contactLookupKey = getContactLookupKey() // uses a cursor to grab a lookup key from phone contacts
    val contactUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, contactLookupKey)

    val intent = Intent(Intent.ACTION_SEND, Uri.parse("smsto:$phoneNumber"))
    intent.putExtra("sms_body", "Hi, I would like to share this contact with you.")
    startActivity(intent)
}
如果我没有连接vCard,该按钮将打开一个以电话号码设置为收件人的消息应用程序。但我一贴上vCard

test_button.setOnClickListener {
    val phoneNumber = "9828675309"
    val contactLookupKey = getContactLookupKey() // uses a cursor to grab a lookup key from phone contacts
    val contactUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, contactLookupKey)

    val intent = Intent(Intent.ACTION_SEND, Uri.parse("smsto:$phoneNumber"))
    intent.putExtra("sms_body", "Hi, I would like to share this contact with you.")
    intent.type = ContactsContract.Contacts.CONTENT_VCARD_TYPE
    intent.putExtra(Intent.EXTRA_STREAM, contactUri)
    startActivity(intent)
}

现在,当消息传递应用程序启动时,vCard会适当地连接到预填充的消息,但收件人的电话号码未设置,因此用户必须手动键入收件人电话号码,或通过消息传递应用程序从联系人中选择收件人。实际上,在初始意图中提供的Uri.parsesmsto:$phoneNumber被忽略。我假设这是因为将意向类型设置为Contacts contract.Contacts.CONTENT\u VCARD\u type会更改意向的处理方式,并且不允许设置收件人电话号码

我还尝试在创建初始意图时使用ACTION_SENDTO,但这会导致以下错误

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=text/x-vcard (has extras) }
在我搜索这个场景的答案时,我找到的所有帖子似乎要么是关于向指定的电话号码发送短信,要么是发送vCard,但从来没有同时发送这两个帖子。我所发现的最接近的似乎是,它描述的功能几乎正是我所寻找的,除了在第3步中声明用户键入要发送vCard的号码之外,我希望我的应用程序以编程方式指定该号码。我所要求的可能吗?用例似乎并不太简单,但似乎以编程方式将文本发送到指定的数字和以编程方式发送vCard出于某种原因彼此不兼容

这可能通过SmsManager实现吗?我更愿意利用用户对消息应用程序的选择,但是如果使用SMSMeMeor可以阻止用户手动指定收件人,我会考虑。