Android Tutorial - Network : Email
Email vis Intent
package app.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent emailIntent=new Intent(Intent.ACTION_SEND); String subject = "Hi!"; String body = "hello from android...."; String[] extra = new String[]{"aaa@bbb.com"}; emailIntent.putExtra(Intent.EXTRA_EMAIL, extra); emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); emailIntent.putExtra(Intent.EXTRA_TEXT, body); emailIntent.setType("message/rfc822"); startActivity(emailIntent); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />
</LinearLayout>
Builds a list of the recipients email addresses each on a different line
//package com.funambol.util; import java.util.Vector; public class StringUtil { private static final String HT = "\t"; private static final String CRLF = "\r\n"; // This class cannot be instantiated private StringUtil() { } public static String[] split(final String s, final String sep) { // convert a String s to an Array, the elements // are delimited by sep final Vector<Integer> tokenIndex = new Vector<Integer>(10); final int len = s.length(); int i; // Find all characters in string matching one of the separators in 'sep' for (i = 0; i < len; i++) if (sep.indexOf(s.charAt(i)) != -1) tokenIndex.addElement(new Integer(i)); final int size = tokenIndex.size(); final String[] elements = new String[size + 1]; // No separators: return the string as the first element if (size == 0) elements[0] = s; else { // Init indexes int start = 0; int end = (tokenIndex.elementAt(0)).intValue(); // Get the first token elements[0] = s.substring(start, end); // Get the mid tokens for (i = 1; i < size; i++) { // update indexes start = (tokenIndex.elementAt(i - 1)).intValue() + 1; end = (tokenIndex.elementAt(i)).intValue(); elements[i] = s.substring(start, end); } // Get last token start = (tokenIndex.elementAt(i - 1)).intValue() + 1; elements[i] = (start < s.length()) ? s.substring(start) : ""; } return elements; } public static String fold(final String recipients) { final String[] list = StringUtil.split(recipients, ","); final StringBuffer buffer = new StringBuffer(); for (int i = 0; i < list.length; i++) { final String address = list[i] + (i != list.length - 1 ? "," : ""); buffer.append(i == 0 ? address + StringUtil.CRLF : StringUtil.HT + address + StringUtil.CRLF); } return buffer.toString(); }
}
Is string an Email address
import java.util.regex.Matcher; import java.util.regex.Pattern; class Main { public static final String EMAIL_PATTERN_STR = "^(.+)@(.+)$"; private static final Pattern EMAIL_PATTERN = Pattern .compile(EMAIL_PATTERN_STR); public static boolean isEmail(String text) { Matcher m = EMAIL_PATTERN.matcher(text); if (!m.find()) { return false; } else { return true; } } }
Send email
import android.content.Context; import android.content.Intent; class EmailUtilities { public static void send(String address, String subject, Context context, String textBody) { final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("plain/text"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { address }); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, textBody); context.startActivity(Intent.createChooser(emailIntent, "Send mail...")); } }
isValidEmailAddress: Check the email address is Valid
import java.util.regex.Matcher; import java.util.regex.Pattern; class Utils { // isValidEmailAddress: Check the email address is OK public static boolean isValidEmailAddress(String emailAddress) { String emailRegEx; Pattern pattern; // Regex for a valid email address emailRegEx = "^[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,4}$"; // Compare the regex with the email address pattern = Pattern.compile(emailRegEx); Matcher matcher = pattern.matcher(emailAddress); if (!matcher.find()) { return false; } return true; } }
Launch the email intent
import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; class Main { public static void launchEmailToIntent(Context context, String subject, String sendTo, boolean includeDebug) { Uri uri = Uri.parse("mailto:" + sendTo); Intent msg = new Intent(Intent.ACTION_SENDTO, uri); msg.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); StringBuilder body = new StringBuilder(); if (includeDebug) { body.append(String.format( "\n\n----------\nSysinfo - %s\nModel: %s\n\n", Build.FINGERPRINT, Build.MODEL)); // body.append(String.format("\n\nBrand: %s\n\n", Build.BRAND)); body.append(String.format("%s config -\n", subject)); // Add locale info body.append(String.format("locale: %s\n", context.getResources() .getConfiguration().locale.getDisplayName())); } msg.putExtra(Intent.EXTRA_EMAIL, sendTo); msg.putExtra(Intent.EXTRA_SUBJECT, subject); msg.putExtra(Intent.EXTRA_TEXT, body.toString()); context.startActivity(msg); } }
start Email Intent
import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; class UIHelper { public static void startEmailIntent(final Context ctx, final String emailto, final String subject, final String text) { final Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/html"); if (emailto != null) i.putExtra(Intent.EXTRA_EMAIL, new String[]{emailto}); i.putExtra(Intent.EXTRA_SUBJECT, subject); i.putExtra(Intent.EXTRA_TEXT, text); ctx.startActivity(Intent.createChooser(i, "Select email application")); } }
start Html Email Intent
import android.content.Context; import android.content.Intent; import android.text.Html; class UIHelper { public static void startHtmlEmailIntent(final Context ctx, final String email, final String subject, final String text, final String url) { final Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/html"); if (email != null) i.putExtra(Intent.EXTRA_EMAIL, new String[] { email }); i.putExtra(Intent.EXTRA_SUBJECT, subject); boolean useHtmlEmail = true; if (useHtmlEmail) { final StringBuilder body = new StringBuilder("<br/>"); body.append(text).append("<br/><br/>").append(url) .append("<br/><br/>App!"); i.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body.toString())); } else { final StringBuilder body = new StringBuilder("\n"); body.append(text).append("\n\n").append(url).append("\n\n") .append("\n\nApp!"); i.putExtra(Intent.EXTRA_TEXT, body.toString()); } ctx.startActivity(Intent.createChooser(i, "Select email application")); } }