package com.android.sendgrid; import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.sendgrid.SendGrid; import com.sendgrid.SendGridException; import org.json.JSONException; import java.io.IOException; public class MainActivity extends Activity { private static final String SENDGRID_USERNAME = ""; private static final String SENDGRID_PASSWORD = ""; private static final int ADD_ATTACHMENT = 1; // Views private EditText toEditText; private EditText fromEditText; private EditText subjectEditText; private EditText msgEditText; private Button attachmentButton; private TextView attachmentText; private Button sendButton; // Attachment fields private Uri selectedImageURI; private String attachmentName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); toEditText = (EditText) findViewById(R.id.to_editText); fromEditText = (EditText) findViewById(R.id.from_editText); subjectEditText = (EditText) findViewById(R.id.subject_editText); msgEditText = (EditText) findViewById(R.id.message_editText); attachmentButton = (Button) findViewById(R.id.attachment_button); attachmentText = (TextView) findViewById(R.id.attachment_textView); sendButton = (Button) findViewById(R.id.send_button); attachmentButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (selectedImageURI == null) { // Start get image intent if no image to attach to email Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, ADD_ATTACHMENT); } else { // Remove image attachment attachmentButton.setText("Add Attachment"); attachmentText.setVisibility(View.GONE); selectedImageURI = null; } } }); sendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Start send email ASyncTask SendEmailASyncTask task = new SendEmailASyncTask(MainActivity.this, toEditText.getText().toString(), fromEditText.getText().toString(), subjectEditText.getText().toString(), msgEditText.getText().toString(), selectedImageURI, attachmentName); task.execute(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == ADD_ATTACHMENT) { if(resultCode==RESULT_OK){ // Get image from result intent selectedImageURI = data.getData(); ContentResolver contentResolver = getContentResolver(); Log.d("SendAppExample", "Image Uri: " + selectedImageURI); // Get image attachment filename attachmentName = ""; Cursor c = contentResolver.query(selectedImageURI, null, null, null, null); if (c != null && c.moveToFirst()) { attachmentName = c.getString(c.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME)); } // Update views to show attachment attachmentText.setVisibility(View.VISIBLE); attachmentText.setText(attachmentName); attachmentButton.setText("Remove Attachment"); } } } /** * ASyncTask that composes and sends email */ private static class SendEmailASyncTask extends AsyncTask<Void, Void, Void> { private Context mAppContext; private String mMsgResponse; private String mTo; private String mFrom; private String mSubject; private String mText; private Uri mUri; private String mAttachmentName; public SendEmailASyncTask(Context context, String mTo, String mFrom, String mSubject, String mText, Uri mUri, String mAttachmentName) { this.mAppContext = context.getApplicationContext(); this.mTo = mTo; this.mFrom = mFrom; this.mSubject = mSubject; this.mText = mText; this.mUri = mUri; this.mAttachmentName = mAttachmentName; } @Override protected Void doInBackground(Void... params) { try { SendGrid sendgrid = new SendGrid(SENDGRID_USERNAME, SENDGRID_PASSWORD); SendGrid.Email email = new SendGrid.Email(); // Get values from edit text to compose email // TODO: Validate edit texts email.addTo(mTo); email.setFrom(mFrom); email.setSubject(mSubject); email.setText(mText); // Attach image if (mUri != null) { email.addAttachment(mAttachmentName, mAppContext.getContentResolver().openInputStream(mUri)); } // Send email, execute http request SendGrid.Response response = sendgrid.send(email); mMsgResponse = response.getMessage(); Log.d("SendAppExample", mMsgResponse); } catch (SendGridException | IOException e) { Log.e("SendAppExample", e.toString()); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); Toast.makeText(mAppContext, mMsgResponse, Toast.LENGTH_SHORT).show(); } } }