Android开发:如何在putExtra中添加多字符串及问卷邮件发送问题
搞定Android问卷提交邮件的多字符串内容问题
嘿,我来帮你解决这个问题!你已经搭好了邮件发送的基础框架,要把10道题的答案(多个字符串)加到邮件里其实很简单,核心就是把所有需要的内容拼接成一个易读的完整字符串,再传递给Intent就行。另外如果要传递多个独立的额外字段,直接多次调用putExtra()就可以,下面一步步来:
第一步:收集并拼接问卷答案
假设你的10道题对应的CheckBox是checkBox1到checkBox10,先把每道题的Yes/No答案收集起来,用StringBuilder拼接成清晰的内容:
// 收集所有问卷答案并拼接成字符串 StringBuilder surveyAnswers = new StringBuilder(); surveyAnswers.append("用户问卷提交结果:\n\n"); surveyAnswers.append("题目1:").append(checkBox1.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目2:").append(checkBox2.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目3:").append(checkBox3.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目4:").append(checkBox4.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目5:").append(checkBox5.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目6:").append(checkBox6.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目7:").append(checkBox7.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目8:").append(checkBox8.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目9:").append(checkBox9.isChecked() ? "Yes" : "No").append("\n"); surveyAnswers.append("题目10:").append(checkBox10.isChecked() ? "Yes" : "No").append("\n");
第二步:把拼接好的内容加入邮件Intent
在你现有的代码里,添加Intent.EXTRA_TEXT来传递邮件正文,要是需要额外传递其他独立字段(比如用户标识、提交时间),直接多调用几次putExtra()就行:
submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 先拼接问卷答案 StringBuilder surveyAnswers = new StringBuilder(); surveyAnswers.append("用户问卷提交结果:\n\n"); surveyAnswers.append("题目1:").append(checkBox1.isChecked() ? "Yes" : "No").append("\n"); // ... 这里补上题目3到10的拼接代码 // 构建邮件Intent Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "abhi.bhardwaj75@gmail.com", null)); intent.putExtra(Intent.EXTRA_SUBJECT, "Android问卷提交结果"); // 把拼接好的多字符串内容作为邮件正文 intent.putExtra(Intent.EXTRA_TEXT, surveyAnswers.toString()); // 示例:如果需要传递额外的独立字段,直接加就行 intent.putExtra("SUBMIT_TIMESTAMP", System.currentTimeMillis()); intent.putExtra("USER_DEVICE", android.os.Build.MODEL); // 唤起邮件应用选择器 startActivity(Intent.createChooser(intent, "请选择邮件应用发送")); } });
小提示
ACTION_SENDTO是专门针对邮件的Intent,只会唤起系统里的邮件应用,不会弹出其他分享选项,非常适合你的问卷提交场景。- 如果想发HTML格式的邮件内容,可以用
Intent.EXTRA_HTML_TEXT替代EXTRA_TEXT,不过要注意部分邮件客户端可能不支持HTML渲染。 - 这个方案不需要额外申请权限,因为是调用系统邮件应用来处理发送操作,不需要你的App直接访问邮件服务。
这样就能把所有问卷的Yes/No答案都整合到邮件里发送啦!
内容的提问来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

