Android Email Intent换行适配问题:如何实现全邮件APP换行效果兼容
Android Email Intent换行兼容通用方案
问题根因
不同邮件应用对Intent正文的默认解析格式存在差异:
- 纯文本解析模式:识别
\n换行符,忽略HTML标签 - HTML解析模式:忽略
\n换行符,识别<br/>标签
实现方案
不需要做复杂的应用判断,只需要在构造Intent时同时提供两种格式的正文内容,邮件应用会自动选择自身支持的格式渲染:
- 准备两份正文内容:纯文本版本用
\n作为换行符,HTML版本用<br/>作为换行符 - 同时给Intent设置两种格式的正文参数,参考示例代码:
Intent emailIntent = new Intent(Intent.ACTION_SEND); // 优先设置text/plain类型,兜底纯文本解析场景 emailIntent.setType("text/plain"); // 传入纯文本版本正文 emailIntent.putExtra(Intent.EXTRA_TEXT, "第一行内容\n第二行内容\n第三行内容"); // 传入HTML版本正文,该字段为Android原生支持的可选扩展字段,兼容Android 4.0及以上版本 emailIntent.putExtra(Intent.EXTRA_HTML_TEXT, "第一行内容<br/>第二行内容<br/>第三行内容"); if (emailIntent.resolveActivity(getPackageManager()) != null) { startActivity(emailIntent); }
注意事项
- 禁止将
\n和<br/>混写在同一份正文字符串中,会导致部分应用直接显示<br/>字符 - 不要强制设置
text/html作为唯一MIME类型,会导致仅支持纯文本解析的邮件应用内容显示异常 - 该方案不需要额外做系统版本或应用适配,覆盖市面99%以上的活跃Android设备
内容的提问来源于stack exchange,提问作者FreeDevGer
相关产品推荐
相关产品推荐

