如何在 Android 12 的意图中包含电子邮件收件人信息?
Posted
技术标签:
【中文标题】如何在 Android 12 的意图中包含电子邮件收件人信息?【英文标题】:How to include email recipient information in intents on Android 12? 【发布时间】:2021-12-16 03:31:27 【问题描述】:自 android 早期以来,我一直使用 recommended way 来填充电子邮件意图。这包括收件人、主题和正文。
然而,在 Android 12 上 - 执行此操作时,收件人字段总是被忽略,其他一切都完全相同。
这里有什么问题?这是操作系统中的错误吗?我默认使用 gmail 进行测试,但同样的事情也适用于其他电子邮件客户端,仍然仅在 Android 12 上。
private fun createIntent(
metadata: String
): Intent
val uri = Uri.parse("mailto:")
return Intent(ACTION_SENDTO)
.setData(uri)
.putExtra(
EXTRA_EMAIL,
arrayOf("example@gmail.com") //Ive also tried without arrayOf, no difference.
)
.putExtra(
EXTRA_SUBJECT,
"Feedback"
)
.putExtra(
EXTRA_TEXT,
metadata
)
【问题讨论】:
还有 ACTION_SEND ? @blackapps 它说(在上面的链接中)包含附件时应该使用 ACTION_SEND。无附件 = ACTION_SENDTO。编辑:我仍然对此进行了测试,没有应用程序能够使用 ACTION_SEND 处理意图。 尝试将电子邮件地址放入Uri
(mailto:example@gmail.com
)。
EmailAddressExposedException? ;-)
我无法让@CommonsWare 工作,但我确实偶然发现了另一个解决方案 - 请在下面查看我的答案!
【参考方案1】:
似乎将ACTION_SEND
与selector
块结合使用可以解决问题。这适用于所有 API 级别,直到 API 21。我让其他人解释为什么会这样,但重要的是它有效。
private fun createIntent(
metadata: String
): Intent
return Intent(ACTION_SEND)
.putExtra(
EXTRA_EMAIL,
arrayOf(EMAIL)
)
.putExtra(
EXTRA_SUBJECT,
TITLE
)
.putExtra(
EXTRA_TEXT,
metadata
)
.apply
selector = Intent(ACTION_SENDTO).setData(Uri.parse("mailto:"))
【讨论】:
以上是关于如何在 Android 12 的意图中包含电子邮件收件人信息?的主要内容,如果未能解决你的问题,请参考以下文章
Android:使用电子邮件意图发送电子邮件,可以在发送之前更改消息吗?