本文转载:http://www.jb51.net/article/38158.htm 侵删
在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情

我们都知道,在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外。 在Android中,调用Email有三种类型的Intent: Intent.ACTION_SENDTO 无附件的发送 Intent.ACTION_SEND 带附件的发送 Intent.ACTION_SEND_MULTIPLE 带有多附件的发送 当然,所谓的调用Email,只是说Email可以接收Intent并做这些事情,可能也有其他的应用程序实现了相关功能,所以在执行的时候,会出现选择框进行选择。

1.使用SENTTO发送 [java] 复制代码代码如下:
Intent data=new Intent(Intent.ACTION_SENDTO); data.setData(Uri.parse("mailto:way.ping.li@gmail.com")); data.putExtra(Intent.EXTRA_SUBJECT, "这是标题"); data.putExtra(Intent.EXTRA_TEXT, "这是内容"); startActivity(data); Intent data=new Intent(Intent.ACTION_SENDTO); data.setData(Uri.parse("mailto:way.ping.li@gmail.com")); data.putExtra(Intent.EXTRA_SUBJECT, "这是标题"); data.putExtra(Intent.EXTRA_TEXT, "这是内容"); startActivity(data);
通过向Intent中putExtra来设定邮件的相关参数。
2.使用SEND发送 [java] 复制代码代码如下:
Intent intent = new Intent(Intent.ACTION_SEND); String[] tos = { "way.ping.li@gmail.com" }; String[] ccs = { "way.ping.li@gmail.com" }; String[] bccs = {"way.ping.li@gmail.com"}; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_BCC, bccs); intent.putExtra(Intent.EXTRA_TEXT, "body"); intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///mnt/sdcard/a.jpg")); intent.setType("image/"); intent.setType("message/rfc882"); Intent.createChooser(intent, "Choose Email Client"); startActivity(intent); Intent intent = new Intent(Intent.ACTION_SEND); String[] tos = { "way.ping.li@gmail.com" }; String[] ccs = { "way.ping.li@gmail.com" }; String[] bccs = {"way.ping.li@gmail.com"}; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_BCC, bccs); intent.putExtra(Intent.EXTRA_TEXT, "body"); intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///mnt/sdcard/a.jpg")); intent.setType("image/"); intent.setType("message/rfc882"); Intent.createChooser(intent, "Choose Email Client"); startActivity(intent);
很简单,发送邮件中,有收件者,抄送者,密送者。 也就是分别通过 Intent.EXTRA_EMAIL, Intent.EXTRA_CC, Intent.EXTRA_BCC 来进行putExtra来设定的,而单个附件的发送,则使用Intent.EXTRA_STREAM来设置附件的地址Uri。

3.使用SEND_MULTIPLE来进行多附件的发送 [java] 复制代码代码如下:
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); String[] tos = { "way.ping.li@gmail.com" }; String[] ccs = { "way.ping.li@gmail.com" }; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_TEXT, "body"); intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); ArrayList imageUris = new ArrayList(); imageUris.add(Uri.parse("file:///mnt/sdcard/a.jpg")); imageUris.add(Uri.parse("file:///mnt/sdcard/b.jpg")); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); intent.setType("image/"); intent.setType("message/rfc882"); Intent.createChooser(intent, "Choose Email Client"); startActivity(intent); Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); String[] tos = { "way.ping.li@gmail.com" }; String[] ccs = { "way.ping.li@gmail.com" }; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_TEXT, "body"); intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); ArrayList imageUris = new ArrayList(); imageUris.add(Uri.parse("file:///mnt/sdcard/a.jpg")); imageUris.add(Uri.parse("file:///mnt/sdcard/b.jpg")); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); intent.setType("image/"); intent.setType("message/rfc882"); Intent.createChooser(intent, "Choose Email Client"); startActivity(intent);

发送多个附件,最主要的时候,通过putParcelableArrayListExtra将多个附件的Uri地址List设置进去就OK了。其实还是很简单的。

更新:
public class MailClientChoose {
public static void mailContact(Context c, String mailAdress) {
Uri uri = Uri.parse("**mailto:"+
**mailAdress);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
//intent.putExtra(Intent.EXTRA_CC, email); // 抄送人
// intent.putExtra(Intent.EXTRA_SUBJECT, "这是邮件的主题部分"); // 主题
// intent.putExtra(Intent.EXTRA_TEXT, "这是邮件的正文部分"); // 正文 c.startActivity(Intent.createChooser(intent, "请选择邮件类应用")); }}

有两点需要注意:
(1):必须使用Intent.ACTION_SENDTO,而不是Intent.ACTION_SEND。
否则就会出现很多非邮箱类应用
(2):必须用 : Uri uri = Uri.parse("[mailto:"+mailAdress(mailto:%22+mailAdress));
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
而不是 :
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.putExtra(Intent.EXTRA_EMAIL, mailAdress);
否则找不到邮箱类应用

更多相关文章

  1. Android getDimensionPixelSize, 代码中设置字体大小,读xml配置。
  2. Google Inbox如何跨平台重用代码?
  3. js调用android本地代码失败 兼容问题
  4. android 启动默认的邮件客户端,多附件的问题
  5. 在程序中用Java代码设置android:gravity, android:layout_Gravit
  6. AsyncTask实例代码演示Android异步任务
  7. Android 事件分发详解及示例代码
  8. Android 的源代码结构
  9. 第二章:根据oschina开源的app代码快速构建自己站点的ANDROID APP

随机推荐

  1. Android中dpi 和density到底是什么关系?
  2. Android自助餐之notification
  3. 59. Android 静态分析插件
  4. android 短信验证自动获取验证码
  5. Expecting android:screenOrientation="u
  6. [置顶] android 设置边框圆角
  7. android初识之路
  8. android中连接到指定wifi
  9. Android SystemUI任务栏修改
  10. Android外置存储器(SD卡)工具类