无法从意图中设置Gmail“主题”和“文本”字段

时间:2013-02-05 17:19:14

标签: java android android-intent

我正在调用一个intent来设置'To'字段没有来自String数组的GMail模板的问题,但我无法设置'subject'和'text'字段。

希望有人能看到我出错的地方

这是我的代码:

package com.example.flybase2;

import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ContactsEmail extends Activity implements OnClickListener{

    String emailPassed;
    String emailAdd;
    String emailSub;
    String emailMess;
    EditText setEmailAddress;
    EditText setEmailSubject;
    EditText setEmailMessage;
    Button btnSendEmail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    setContentView(R.layout.emaillayout);

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) {
        emailPassed = extras.getString("passedEmailAdd"); 
    }

    setEmailAddress = (EditText) findViewById (R.id.inputEmailAddress);
    setEmailAddress.setText(emailPassed);
    setEmailSubject = (EditText) findViewById (R.id.inputEmailSubject);
    setEmailMessage = (EditText) findViewById (R.id.inputEmailMessage);

    emailAdd = setEmailAddress.getText().toString();
    emailSub = setEmailSubject.getText().toString();
    emailMess = setEmailMessage.getText().toString();

    btnSendEmail = (Button)findViewById(R.id.btnSendEmail);

    btnSendEmail.setOnClickListener(this);
    }

    @Override
    public void onClick(View sendEmailClick) {
        Intent sendEmailIntent = new Intent(Intent.ACTION_SEND); 
        sendEmailIntent.setType("plain/text");
        sendEmailIntent.putExtra(Intent.EXTRA_EMAIL,new String[] {emailAdd});  
        sendEmailIntent.putExtra(Intent.EXTRA_SUBJECT, emailSub); 
        sendEmailIntent.putExtra(Intent.EXTRA_TEXT, emailMess); 
        startActivity(Intent.createChooser(sendEmailIntent, "Send mail..."));   
    }
}   

1 个答案:

答案 0 :(得分:0)

试试这个。

实际上,当活动创建时,您将获得这些editext的值。那时候这些都是空的。所以你需要用onclick方法写出这些。

当您点击按钮时,您将获得当前的编辑文本值。

我希望这能解决你的问题。

@Override
public void onClick(View sendEmailClick) {
    emailAdd = setEmailAddress.getText().toString();
    emailSub = setEmailSubject.getText().toString();
    emailMess = setEmailMessage.getText().toString();
    Intent sendEmailIntent = new Intent(Intent.ACTION_SEND); 
    sendEmailIntent.setType("plain/text");
    sendEmailIntent.putExtra(Intent.EXTRA_EMAIL,new String[] {emailAdd});  
    sendEmailIntent.putExtra(Intent.EXTRA_SUBJECT, emailSub); 
    sendEmailIntent.putExtra(Intent.EXTRA_TEXT, emailMess); 
    startActivity(Intent.createChooser(sendEmailIntent, "Send mail..."));
}

并从onCreate()方法中删除这三行。

emailAdd = setEmailAddress.getText().toString();
emailSub = setEmailSubject.getText().toString();
emailMess = setEmailMessage.getText().toString();