本文转载: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(安卓)使用Parcelable序列化对象
  2. android中ListActivity使用记录Your content must have a ListVi
  3. android下使用google test入门
  4. Linux C++工程师2小时了解Android记录
  5. 阿里云物联网平,Android台接入问题(couldn't find "libcoap.so")
  6. 使用Android(安卓)BindingAdapter与InverseBindingAdapter实现Se
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. CentOS 7.4 64位安装配置MySQL8.0的详细
  2. MySQL通过实例化对象参数查询实例讲解
  3. MySQL连接抛出Authentication Failed错误
  4. 对比MySQL中int、char以及varchar的性能
  5. 一键安装mysql5.7及密码策略修改方法
  6. Windows下MySQL安装教程图文详解
  7. MYSQL实现排名及查询指定用户排名功能(并
  8. mysql如何利用binlog进行数据恢复详解
  9. MySQL8.0安装中遇到的3个小错误总结
  10. Mysql常用基准测试命令总结