转自:http://www.open-open.com/lib/view/open1347005126912.html

众所周知,在Android中调用其他程序进行相关处理,都是使用的Intent。当然,Email也不例外。

在Android中,调用Email有三种类型的Intent:

Intent.ACTION_SENDTO  无附件的发送

Intent.ACTION_SEND  带附件的发送

Intent.ACTION_SEND_MULTIPLE  带有多附件的发送

当然,所谓的调用Email,只是说Email可以接收Intent并做这些事情,可能也有其他的应用程序实现了相关功能,所以在执行的时候,会出现选择框进行选择。

1.使用SENTTO发送

1
2
3
4
5
Intent data=new Intent(Intent.ACTION_SENDTO); 
data.setData(Uri.parse("mailto:455245521@qq.com")); 
data.putExtra(Intent.EXTRA_SUBJECT, "这是标题"); 
data.putExtra(Intent.EXTRA_TEXT, "这是内容"); 
startActivity(data);

通过向Intent中putExtra来设定邮件的相关参数。

2.使用SEND发送

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "fdafdafa@gmail.com" };
String[] ccs = { "gegeff@gmail.com" };
String[] bccs = {"fdafda@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:///sdcard/Chrysanthemum.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来进行多附件的发送

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
String[] tos = { "wingfourever@gmail.com" };
String[] ccs = { "tongyue@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<uri> imageUris = new ArrayList<uri>();
imageUris.add(Uri.parse("file:///sdcard/Chrysanthemum.jpg"));
imageUris.add(Uri.parse("file:///sdcard/Desert.jpg"));     
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
intent.setType("image/*");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");
startActivity(intent);</uri></uri>

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

如下是在三星galaxy tab 2 10.1上面的运行效果:

对于使用邮件发送,在很多的Android应用中都会使用到,跟微博分享一样的常见。大家也只需要稍微了解下就可以了,毕竟还是很容易的。

Android 调用系统Email发送带多附件的邮件的更多相关文章

  1. Android开发中怎样调用系统Email发送邮件(多种调用方式)

    在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...

  2. Android调用系统相机、自己定义相机、处理大图片

    Android调用系统相机和自己定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,而且因为涉及到要把拍到的照片显示出来,该样例也会涉及到Android载入大图片时候的处 ...

  3. Android调用系统相机、自定义相机、处理大图片

    Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...

  4. Android调用系统相册和拍照的Demo

    最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题 ...

  5. Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博

    原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...

  6. android中调用系统的发送短信、发送邮件、打电话功能

    1 调用发送短信功能: Uri smsToUri = Uri.parse("smsto:");  Intent sendIntent = new Intent(Intent.ACT ...

  7. (转)Android调用系统自带的文件管理器进行文件选择并获得路径

    Android区别于iOS的沙盒模式,可以通过文件浏览器浏览本地的存储器.Android API也提供了相应的接口. 基本思路,先通过Android API调用系统自带的文件浏览器选取文件获得URI, ...

  8. Android调用系统的打电话和发短信界面(1.将消息内容带过去2.实现群发)

    package com.example.myapi.sms; import android.app.Activity; import android.content.Intent; import an ...

  9. android调用系统自带的的浏览器搜索关键字

    //调用系统的浏览器搜索详情 public void jumpBrowser(String value) { /* 取得网页搜寻的intent */ Intent search = new Inten ...

随机推荐

  1. python夜记

    关于多行字符串(multi-line strings)的表现: Python列表是基于0索引的.(zero-indexed). 晌午起床来嘞,再来些笔记: Treasures 1: 列表方法rever ...

  2. (原)Vue 单文件组件安装 (创建vue-cli 项目)

    更新于20200220 题外话:久违了我的博客园 正题: 1.准备工作,安装环境 1.安装node 官网下载安装即可  -- 配置环境变量 2.安装npm (基于node.js 包管理器) 3.安装c ...

  3. python测量代码运行时间方法

    Python 社区有句俗语: “python自己带着电池” ,别自己写计时框架. Python3.2具备一个叫做 timeit 的完美计时工具可以测量python代码的运行时间. timeit 模块: ...

  4. VIM学习(转)

    原文:http://www.cnblogs.com/nerxious/archive/2012/12/21/2827303.html 断断续续的使用VIM也一年了,会的始终都是那么几个命令,效率极低 ...

  5. ASP.NET/C# Razor视图引擎深入浅出

    在ASPX中我们使用 <% %>在里面编写C#代码在Razor中我们将会使用@{}编写C#代码1.基础——@+属性显示计算1+2的值:<span>1+2=@(1+2)</ ...

  6. easy-rules

    我们在写业务代码经常遇到需要一大堆if/else,会导致代码可读性大大降低,有没有一种方法可以避免代码中出现大量的判断语句呢?答案是用规则引擎,但是传统的规则引擎都比较重,比如开源的Drools,不适 ...

  7. Git - 03. git 工作空间

    1. 概述 git 存放代码的地方 2. 创建 命令 # 1. 从无到有 > git init # 2. 从远程拉去现有的仓库 > git clone <url> 3. 文件生 ...

  8. RLE压缩算法详解

    from:http://data.biancheng.net/view/152.html RLE压缩算法(下简称RLE算法)的基本思路是把数据按照线性序列分成两种情况:一种是连续的重复数据块,另一种是 ...

  9. Go_type

    1. type的定义和使用 Go语言支持函数式编程,可以使用高阶编程语法.一个函数可以作为另一个函数的参数,也可以作为另一个函数的返回值,那么在定义这个高阶函数的时候,如果函数的类型比较复杂,我们可以 ...

  10. 联合查询:union

    1.联合查询:union 1.1 作用:将多条select语句的结果,合并到一起,称之为联合操作. 1.2 语法:( ) union ( ); 例子:(select name from info_or ...