You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android 12的Intent中正确传递邮件收件人信息

问题原因

Android 12及以上版本调整了邮件Intent的解析规则,并非系统Bug。
旧版本邮件客户端会同时读取EXTRA_EMAIL附加字段和mailto: URI中的收件人信息,从Android 12开始,包括Gmail在内的主流邮件客户端均优先解析mailto: URI本身携带的参数,不再主动读取EXTRA_EMAIL字段,因此出现仅收件人失效、主题和正文正常的现象。

解决方案
  • 将收件人地址直接拼接在mailto: URI中,多个收件人用英文逗号分隔
  • 可同时保留EXTRA_EMAIL字段,向下兼容Android 12以下的系统版本
  • 若收件人地址包含特殊字符,建议通过Uri构造方法自动处理编码,避免解析异常
修正后的代码示例
private fun createIntent(
    metadata: String
): Intent {
    // 写法1:直接拼接收件人到URI,多个收件人用英文逗号分隔
    val uri = Uri.parse("mailto:example@gmail.com")
    
    // 写法2:动态构造更稳妥,自动处理编码问题
    // val targetEmail = "example@gmail.com"
    // val uri = Uri.parse("mailto:")
    //     .buildUpon()
    //     .appendPath(targetEmail)
    //     .build()

    return Intent(ACTION_SENDTO)
        .setData(uri)
        // 保留该字段实现向下兼容
        .putExtra(EXTRA_EMAIL, arrayOf("example@gmail.com"))
        .putExtra(EXTRA_SUBJECT, "Feedback")
        .putExtra(EXTRA_TEXT, metadata)
}

内容的提问来源于stack exchange,提问作者zoltish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:54:04