coltsfan95
coltsfan95

Reputation: 75

I'm trying to make an app that takes feedback input from a user, and then sends in an email. Ideas?

So, I want this to send the input from the user in a email to me, but I don't want the user to have to select an email app, and manually input the "to" address. Not sure what to do.

Currently, it saves all the input, but it makes the user choose an email client, and doesn't pre-populate the "to" field.

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();



}

}

Upvotes: 1

Views: 137

Answers (1)

andy256
andy256

Reputation: 2881

Edit ... This Question gives ways of doing this, but several respected posters point out that these techniques are undocumented ...

We can send email using an 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[] { "[email protected]" });
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"));

Note that I am invoking the Chooser here.

Upvotes: 1

Related Questions