Как отправить e-mail сообщение из Android приложения
Главная » Как отправить e-mail сообщение из Android приложения

В этом уроке мы научимся отправлять электронные сообщения из своего приложения, вызывая с помощью намерения Intent стандартный почтовый клиент и передавая в него введенные данные имени, темы и текста сообщения. 

Начнем с создания нового проекта, выбираем Blank Activity. Никаких особенных разрешений получать нам не нужно, поэтому сразу идем в файл activity_main.xml и делаем интерфейс нашего приложения с помощью следующего кода:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/linearLayout1"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical"
 android:padding="5dp" >
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Кому:"
 android:textAppearance="?android:attr/textAppearanceLarge" />
 <EditText
 android:id="@+id/receiver_Email"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:hint="Введите адрес" >
 </EditText>
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Тема:"
 android:textAppearance="?android:attr/textAppearanceLarge" />
 <EditText
 android:id="@+id/message_theme"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:hint="Введите тему сообщения" >
 </EditText>
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Сообщение:"
 android:textAppearance="?android:attr/textAppearanceLarge" />
 <EditText
 android:id="@+id/message_text"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:gravity="top"
 android:hint="Введите сообщение"
 android:inputType="textMultiLine"
 android:lines="5" />
 </LinearLayout>

У нашего приложения будет довольно незамысловатый функционал. Сделаем две кнопки, одна будет очищать всю введенную информацию в поля приложения, а вторая будет вызывать стандартное приложение для отправки сообщений. Но мы сделаем так, что кнопки будут не в самом интерфейсе activity, не кнопки Button, как обычно, а кнопки в меню приложения. Поэтому, откройте файл настроек меню приложения под названием menu_main.xml и придайте ему вот такой вид:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
 <item
 android:id="@+id/menu_clear"
 android:icon="@android:drawable/ic_menu_close_clear_cancel"
 android:title="Очистить"/>
 <item
 android:id="@+id/menu_send"
 android:icon="@android:drawable/ic_menu_send"
 android:title="Отправить"/>
</menu>

Таким образом, используя стандартные иконки, мы создали меню из двух необходимых кнопок.

Теперь переходим к работе с кодом. Для этого открываем файл MainActivity.java и добавляем туда следующее (объяснения происходящего даны в коде):

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;

public class MainActivity extends Activity {

 //Объявляем используемые переменные:
 private EditText receiver_Email;
 private EditText message_theme;
 private EditText message_text;

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

 //Инициализируем переменные, привязываем их к нашим объектам:
 receiver_Email = (EditText) findViewById(R.id.receiver_Email);
 message_theme = (EditText) findViewById(R.id.message_theme);
 message_text = (EditText) findViewById(R.id.message_text);

 }
 //Стандартный метод для реализации меню приложения:
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 getMenuInflater().inflate(R.menu.menu_main, menu);
 return true;
 }

 //Описываем функционал кнопок меню:
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {

 //В случае кнопки "Очистить", для всех элементов EditText настраиваем пустые строки для ввода,
 //то есть очищаем все поля от введенного текста:
 case R.id.menu_clear:
 receiver_Email.setText("");
 message_text.setText("");
 message_theme.setText("");
 break;
 
 //Для кнопки "Отправить" создаем 3 строковых объекта для контакта, темы и текста сообщения
 case R.id.menu_send:
 String contact = receiver_Email.getText().toString();
 String subject = message_theme.getText().toString();
 String message = message_text.getText().toString();

 //С помощью намерения Intent вызываем стандартный пакет приложения для отправки e-mail,
 //передаем в него данные с полей "адрес", "тема" и "текст сообщения",
 //заполняя ими соответствующие поля стандартного e-mail приложения 
 //и запускаем процесс перехода с нашего приложения в стандартную программу для обмена e-mail:
 Intent emailIntent = getPackageManager().getLaunchIntentForPackage("com.android.email");
 emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { contact });
 emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
 emailIntent.putExtra(Intent.EXTRA_TEXT, message);
 startActivity(emailIntent);
 break;
 }
 return true;
 }
}

Осталось, как обычно, только протестировать наше сегодняшнее творение. Запускаем приложение и смотрим на результат:

Можем смело отправлять сообщения на электро почту

Категория: Уроки программирования | Просмотров: 2385 | Добавил: Oleg | Теги: уроки Android, Android приложения, e-mail сообщение, Android программирование | Рейтинг: 0.0/0
Всего комментариев: 0
avatar