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"));
  }
}