Главная » Как отправить 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;
}
}
Осталось, как обычно, только протестировать наше сегодняшнее творение. Запускаем приложение и смотрим на результат: | |
|
Всего комментариев: 0 | |