如何将TextView内容传入邮件消息正文?Android开发求助
解决邮件正文添加TextView内容的问题
嘿,别担心,这个问题其实很好搞定!咱们先修正代码里的小问题,再解决正文添加的需求:
首先修正代码里的一个小错误
你在初始化TextView的时候写了:
TextView txa = (TextView) findViewById(tx);
这里的tx应该是R.id.tx,不然编译器找不到对应的控件,会直接报错哦!
把TextView内容添加到邮件正文
要把TextView的内容放进邮件正文,只需要在sendEmail()方法里添加一个Intent.EXTRA_TEXT的参数就行。这里有两种实用的方式:
方式1:直接获取TextView的文本内容
如果你的TextView已经显示了所有需要的内容,直接获取它的文本即可:
protected void sendEmail() { Log.i("Send email", ""); String[] TO = {"201416134@omancollege.edu.om"}; String[] CC = {""}; // 获取TextView的内容 TextView txa = findViewById(R.id.tx); String emailBody = txa.getText().toString(); Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setData(Uri.parse("mailto:")); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_EMAIL, TO); emailIntent.putExtra(Intent.EXTRA_CC, CC); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "want to buy item"); // 添加正文内容 emailIntent.putExtra(Intent.EXTRA_TEXT, emailBody); try { startActivity(Intent.createChooser(emailIntent, "Send mail...")); finish(); Log.i("Mail sent...", ""); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(Buy1Activity.this, "There is no email client installed.", Toast.LENGTH_SHORT).show(); } }
方式2:直接复用之前拼接的字符串
既然你已经用imgUploadObj拼接了内容,也可以把这个字符串保存为类成员变量,直接用它当正文,这样不用再重复获取TextView的文本:
public class Buy1Activity extends Activity { // 声明类成员变量保存商品详情 private String itemDetails; @Override protected void onCreate(Bundle savedInstanceState) { ImageUpload imgUploadObj = getIntent().getExtras().getParcelable("selected_image_upload"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_buy1); // 拼接内容并保存到成员变量 itemDetails = " Name : " + imgUploadObj.getName() + "\n" + " Brand : " + imgUploadObj.getBrand() + "\n" + " Model : " + imgUploadObj.getModel() + "\n" + " Year : " + imgUploadObj.getYear() + "\n" + " price : " + imgUploadObj.getPrice() + "\n" + " desc : " + imgUploadObj.getDesc(); TextView txa = findViewById(R.id.tx); txa.setText(itemDetails); Button startBtn = findViewById(R.id.sendEmail1); startBtn.setOnClickListener(view -> sendEmail()); } protected void sendEmail() { Log.i("Send email", ""); String[] TO = {"201416134@omancollege.edu.om"}; String[] CC = {""}; Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setData(Uri.parse("mailto:")); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_EMAIL, TO); emailIntent.putExtra(Intent.EXTRA_CC, CC); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "want to buy item"); // 直接用保存的字符串当正文 emailIntent.putExtra(Intent.EXTRA_TEXT, itemDetails); try { startActivity(Intent.createChooser(emailIntent, "Send mail...")); finish(); Log.i("Mail sent...", ""); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(Buy1Activity.this, "There is no email client installed.", Toast.LENGTH_SHORT).show(); } } }
额外小提示(给新手的小建议)
- 引用控件id的时候一定要用
R.id.xxx,不能直接写变量名 - 如果多个方法需要用到同一个控件或者数据,把它声明为类成员变量会更方便
- 注意字符串拼接里的小细节:你原来写的
" desc + : "可以改成" desc : ",不然邮件正文里会多一个多余的+哦
内容的提问来源于stack exchange,提问作者mohamed mo
相关产品推荐
相关产品推荐

