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

如何将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:24:53