我正在尝试创建一个从用户那里获取反馈输入的应用程序,然后发送电子邮件。想法?

时间:2013-08-26 01:55:32

标签: android

所以,我希望这可以通过电子邮件将用户的输入发送给我,但我不希望用户必须选择电子邮件应用程序,并手动输入“到”地址。不知道该怎么做。

目前,它会保存所有输入,但它会让用户选择一个电子邮件客户端,而不会预先填充“收件人”字段。

package com.rappe.refillsapp;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Button;
import android.content.Intent;

public class RefillActivity extends Activity {
    public String name;
    public String birthday;
    public String prescriptionOptions;
    public String notes;
    public String number;
    public String email;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.refill_activity_main);

    Button submit = (Button) findViewById(R.id.ButtonSendRefillRequest);
    submit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            sendRefillRequest();
            String to = email;
            String subject = name;
            String message = (birthday+"\n"+number+"\n"+prescriptionOptions+"\n"+notes);

            Intent mEmail = new Intent(Intent.ACTION_SEND);
            mEmail.putExtra(Intent.EXTRA_EMAIL, to);
            mEmail.putExtra(Intent.EXTRA_SUBJECT, subject);
            mEmail.putExtra(Intent.EXTRA_TEXT, message);

            //lets user choose email client/app
            mEmail.setType("message/rfc822");
            startActivity(Intent.createChooser(mEmail, "Choose an email client to send your request for a refill!"));

        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.refill, menu);
    return true;
}
public void sendRefillRequest(){
    final EditText nameField = (EditText) findViewById(R.id.EditTextName);
    name = nameField.getText().toString();
    final EditText birthdayField = (EditText) findViewById(R.id.EditTextBirthday);
    birthday =  birthdayField.getText().toString();
    final EditText numberField = (EditText) findViewById(R.id.EditTextPrescriptionNumber);
    number = numberField.getText().toString();
    final Spinner prescriptionOptions = (Spinner) findViewById(R.id.SpinnerPrescriptionOptions);
    this.prescriptionOptions = prescriptionOptions.getSelectedItem().toString();
    final EditText notesField = (EditText) findViewById(R.id.EditTextSpecialNotes);
    notes = notesField.getText().toString();



}

}

1 个答案:

答案 0 :(得分:1)

编辑......这个Question提供了这样做的方法,但是一些受人尊敬的海报指出这些技术没有记录......

我们可以使用Intent发送电子邮件:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
String subject = "My subject";
String body = "My body text";
sendIntent.setType("message/rfc822");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "recipient.address@xyz.com" });
sendIntent.putExtra(Intent.EXTRA_TEXT, body);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("/file/to/attach")));
startActivity(Intent.createChooser(sendIntent, "Please send email"));

请注意,我在此处调用Chooser