如何在 Android 12 的意图中包含电子邮件收件人信息?

How to include email recipient information in intents on Android 12?

自 Android 早期以来,我一直在使用 recommended way 来填充电子邮件意图。这包括收件人、主题和正文。

但是在 Android 12 - 执行此操作时收件人字段总是被忽略,其他一切都完全相同。

这里有什么问题?这是 OS 中的错误吗?我默认使用 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_SENDselector 块结合使用就可以了。这适用于所有 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:"))
        }
}