我有两个文本框:一个用于主题,另一个用于实际消息。不幸的是,我在使用最新的gmail应用程序运行android 4.2.2的手机上测试时,我正在使用的代码没有传递任何信息。
更新方法。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tipus);
findViewById(R.id.sendemailbutton).setOnClickListener(emailclick);
findViewById(R.id.cancelbtn).setOnClickListener(myclick);
subjectline = (EditText) findViewById(R.layout.tipus);
emailcontent = (EditText) findViewById(R.layout.tipus);
}
public final Button.OnClickListener emailclick = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
String aEmailList[] = { oliuremail, vikemail };
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList); //supposed to pass info of the emails to the email app
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subjectline.getText().toString()); //not taking stuff from an edittext, only things in quotes.
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailcontent.getText().toString()); //won't accept anything from an edittext.
emailIntent.setType("plain/text");
startActivity(Intent.createChooser(emailIntent, "Send Email Using..."));
}
};
tipus.xml(已更新)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/messagetitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/emailmessage"
android:layout_alignParentLeft="true"
android:layout_marginBottom="46dp"
android:text="Message:" />
<EditText
android:id="@+id/emailmessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="122dp"
android:ems="10"
android:hint="Write your message here."
android:inputType="textMultiLine" />
<Button
android:id="@+id/cancelbtn"
style="?android:attr/buttonStyleSmall"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@drawable/arrowrightblack" />
<Button
android:id="@+id/sendemailbutton"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Send" />
<EditText
android:id="@+id/subjectline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/subjectdenoter"
android:layout_alignBottom="@+id/subjectdenoter"
android:layout_alignParentRight="true"
android:ems="10"
android:hint="Please Add a Subject." />
<TextView
android:id="@+id/subjecttitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView3"
android:layout_alignRight="@+id/textView3"
android:layout_marginBottom="82dp"
android:text="Subject:" />
当我使用此代码时,信息将传递到电子邮件应用程序。但是,我有两个文本框,用户将在其中键入主题,然后键入电子邮件的实际文本。我需要从两个文本框传递的信息发送到电子邮件应用程序。我查看了stackoverflow和tutsplus,他们有一些信息,但那些谈论从文本框传递数据的信息并不是很有用。提前致谢。
编辑:
我终于找到了答案。您必须创建一个私有字符串,例如:
private String getSubjectContent() {
String text = "";
text += yourtexteditname.getText().toString() + "\n";
return text;
}
注意:您可以在课程中制作尽可能多的这些方法。在每个方法中,只需将“yourtexteditname”替换为textEdit的名称。如果您想从多个textEdits获取信息并将它们放在电子邮件中的一个位置(主题行,邮件正文等),您还可以将多个textEdits放入一个方法中。
然后,您所要做的就是添加正常代码以启动意图。像这样:
public final Button.OnClickListener emailclick = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
variablename = (EditText) findViewById(R.id.textviewname); //defining the textedit you want to get info from.
variablename = (EditText) findViewById(R.id.othertextviewname); //defining the textEdit you want to get info from.
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822"); //specifies message for email app.
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, getEmailContent()); //adds the actual content of the email by calling the method previously defined
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getSubjectContent()); //adds the subject by calling the method previously defined.
startActivity(Intent.createChooser(emailIntent, "Title of the dialog chooser"));
}
};
答案 0 :(得分:1)
您可以使用String变量来使用它。 像..
String subjectdata = edittext.getText().toString();
String sharedata = edittext1.getText().toString();
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_SUBJECT, subjectdata);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"abc@gmail.com"});
email.putExtra(Intent.EXTRA_TEXT, shareddata);
email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Send Mail :"));
答案 1 :(得分:0)
由于您要向多个电子邮件收件人发送邮件,我认为您需要使用Intent.ACTION_SEND_MULTIPLE
代替Intent.ACTION_SEND
:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
有些实施方案也更喜欢Intent.ACTION_SENDTO
。
(可选)您可能想要使用它:
emailIntent.setType("message/rfc822");
而不是:
emailIntent.setType("plain/text");
最后,从EditText
字段中检索用户的文本条目,如下所示:
String <body-or-subject-text> = editText.getText().toString();