Android 13使用Intent.ACTION_SEND发邮件正文为空问题及解决
Android 13邮件正文为空问题排查与解决
问题原因
Android 13对Intent.ACTION_SEND的处理机制进行了更新,部分邮件应用(如Gmail)在接收text/plain类型的ACTION_SEND Intent时,无法正确解析Intent.EXTRA_TEXT参数,进而导致邮件正文为空。
解决方案
方案一:替换为Intent.ACTION_SEND_MULTIPLE
将Intent的Action替换为Intent.ACTION_SEND_MULTIPLE,其余参数保持不变即可修复问题,修改后的代码如下:
final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); emailIntent.putExtra(Intent.EXTRA_TEXT, body); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {email}); try { context.startActivity(Intent.createChooser(emailIntent, "Email:")); } catch (android.content.ActivityNotFoundException ex) { trackException(ex); }
方案二:修改Intent类型为message/rfc822
另一种可行方法是将Intent的Type设置为message/rfc822,让邮件应用按照标准邮件格式解析参数,代码示例:
final Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setType("message/rfc822"); emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); emailIntent.putExtra(Intent.EXTRA_TEXT, body); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {email}); try { context.startActivity(Intent.createChooser(emailIntent, "Email:")); } catch (android.content.ActivityNotFoundException ex) { trackException(ex); }
内容的提问来源于stack exchange,提问作者toto_tata
相关产品推荐
相关产品推荐

