JaBricks c PostgreSQL
Базовое приложение
Пользователи
Настройки форм
Права доступа
Ролевой механизм
Загрузка модулей410013796724260
Intent отправки EmailВ данной статье рассматривается пример использования неявного намерения Intent для отправки Email сообщения. Для реализации данной функции в приложении необходимо определить доступ (uses-permission) в манифесте приложения, сформировать и вызвать неявное намерение отправки сообщения в активности.
Примечание : Определение uses-permission в манифесте AndroidManifest.xmlДля использования неявного намерения для отправки Email-сообщений следует в манифесте примера AndroidManifest.xml указать разрешения <uses-permission> на доступ к определенным функциям, как это представлено в следующем коде :
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.test.p09intent">
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
. . .
</application>
</manifest>
Описание интерфейсаПри описании интерфейса примера в файле «res/layout/activity_main.xml» (наименование может отличаться) используем шаблон типа RelativeLayout с кнопкой отправки Email сообщения.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".EmailActivity"
android:background="#fdedfd" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Send email"
android:textStyle="bold"
android:textColor="#3e87ec" />
</RelativeLayout>
Код активности EmailActivityАктивность EmailActivity реализует интерфейс View.OnClickListener, согласно которому переопределяется метод onClick. Вызов данного метода подключен к кнопке. В методе onClick определяется неявное намерение типа Intent.ACTION_SENDTO. Возможно использовать один из 3-х вариантов : Типы действий Action
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CalendarContract;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.Calendar;
public class EmailActivity extends AppCompatActivity
implements View.OnClickListener
{
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_email);
context = getApplicationContext();
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String[] emails;
String[] emailsCC;
String[] emailsBCCl
emails = new String[]{ "jim@example.com"};
// emails for cc
emailsCC = new String[]{"tom@example.com"};
// emails for bcc
emailsBCC = new String[]{"kate@example.com"};
String mailSubject = "Тема email";
String mailBody = "Текст сообщения";
// Initialize a new Intent
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.putExtra(Intent.EXTRA_EMAIL, emails);
// Define the email cc and bcc
intent.putExtra(Intent.EXTRA_CC , emailsCC);
intent.putExtra(Intent.EXTRA_BCC, emailsBCC);
intent.putExtra(Intent.EXTRA_SUBJECT, mailSubject);
intent.putExtra(Intent.EXTRA_TEXT,mailBody);
// For only email app should handle this intent
intent.setData(Uri.parse("mailto:"));
// Try to start the activity
if (intent.resolveActivity(
getPackageManager()) != null) {
startActivity(intent);
Toast.makeText(context, "Send email.",
Toast.LENGTH_SHORT).show();
} else {
// If there are no email client installed
// in this device
String err;
err="No email client installed in this device.";
Toast.makeText(context, err,
Toast.LENGTH_SHORT).show();
}
}
}
MIME TypeПри определении типа mime используйте следующие варианты :
Пример определения типа mime в фильтре намерения :
<activity ...>
<intent-filter>
<action
android:name="android.intent.action.SEND" />
<data android:type="*/*" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.SENDTO" />
<data android:scheme="mailto" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Extra данныеПри определении типа данных возможны следующие варианты :
Связанные страницы |
