小提示:用户从你Android程序发送邮件的最简单方法

本教程详细介绍了在Android应用中如何通过创建和配置Intent来启动邮件客户端,并发送带有附加数据的邮件。包括Intent的创建、配置、启动以及处理多个邮件客户端的情况,同时提供了发送邮件内容的示例代码。

原文地址:http://mobile.tutsplus.com/tutorials/android/android-email-intent/

这个教程会展示给你如何启动系统内部的邮件程序,并且允许用户发送一封带有附加数据的邮件。你将通过在程序的Activity中创建和配置合适的Intent来完成这个目标。

Step 1: 创建一个Android程序

首先创建一个Android项目。当你的项目建立好并且程序可以运行后,考虑一下你在什么情况下启动邮件程序并发送一封邮件。是发生在一个按钮被按下时吗?你是要自己填写邮件中的细节,或者干脆允许用户自己去填写邮件的细节呢?一般来说,我们用按钮或菜单来实现这个功能。接下来,你需要考虑把代码放到程序中去启动邮件客户端。

如果你使用的是模拟器,那么你需要去配置邮件客户端。如果你不配置邮件客户端,那么我们讨论的Intent也就不会起作用了。如果你想要在运行过程中看到邮件客户端的选择器,那么你需要使用多个邮件客户端程序,例如Gmail和Email程序。现在你配置好了邮件客户端,可以继续进行下面的教程了。

你也可以在这里获得示例代码来完成这个教程。

Step 2: 创建Intent

邮件程序能通过发送一个下面的Intent来启动:android.content.Intent.ACTION_SEND。首先在你的按钮处理中创建一个如下面这种类型的Intent:

  1. Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);  

Step 3: 配置Intent类型

这是一个非常普遍的Intent类型。基本上来说,它通知Android系统你的应用程序要发送一些信息,ACTION_SEND这个Intent能用于发送不同类型的信息,包括邮件信息、文本信息(SMS)、图片信息(MMS)等等。因此,为了使得Android系统能正确的匹配您的请求到合适的应用程序上,你需要给这个Intent添加一些额外的配置信息。

例如,如果你打算发送文本数据,你应该使用下面的setType()方法设置Intent的类型:

emailIntent.setType("plain/text");  

在设备上,短信程序和邮件程序一般用来处理纯文本消息的发送。



Step 4: 启动Intent

当你启动这个Intent时,任何支持纯文本消息的程序都能处理这个请求。如果你为Intent设置了数据类型,你可以调用startActivity()方法来传递你的Intent:

startActivity(emailIntent);  



Step 5: 当多个应用程序可以发送邮件时的处理

用户可以在他们的设备上安装任意数目的Android程序。通常,他们安装多个发送消息的程序。例如,他们可能在个人邮件客户端和工作邮件客户端使用不同的程序。您可以通过startActivity()方法调用createChooser()来允许用户去选择哪个应用程序来处理这个Intent:

startActivity(Intent.createChooser(emailIntent, "Send your email in:"));  

所有程序中intent filter的设置能匹配纯文本ACTION_SEND请求的程序,将被提示给用户。用户可以选择一个特定的应用程序来启动。



Step 6: 提供消息内容

通常为了简化用户的输入,你会希望默认提供一些邮件的内容。例如,你可能想要设置电子邮件的收件人列表,邮件的主题或者邮件正文。你可以通过提供Intent的extras额外数据来实现这件事情。

下面的代码创建了Intent,配置了extras额外数据,并且启动新的Activity:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);  
  
String aEmailList[] = { "user@fakehost.com","user2@fakehost.com" };  
String aEmailCCList[] = { "user3@fakehost.com","user4@fakehost.com"};  
String aEmailBCCList[] = { "user5@fakehost.com" };  
  
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);  
emailIntent.putExtra(android.content.Intent.EXTRA_CC, aEmailCCList);  
emailIntent.putExtra(android.content.Intent.EXTRA_BCC, aEmailBCCList);  
  
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My subject");  
  
emailIntent.setType("plain/text");  
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "My message body.");  
  
startActivity(emailIntent);  

现在,如果你启动了ACTION_SEND这个Intent,你会发现,这些字段已经为用户填写好了。



关于权限的提示:虽然你的应用程序是利用设备的发送消息功能,但是它并不需要任何关于这方面的权限。这是因为应用程序不是由它本身直接发送消息的,而是利用其它应用程序来做这件事。

总结

在本教程中你已经学会了如何配置一个Intent去启动和发送一个邮件消息。用户始终是最终决定是否发送消息的主体。 然而,这个特性对希望包括简单的用户反馈功能或与用户首选邮件客户端整合的程序是非常有用的。

关于译者

本人现在正就读于沈阳工业大学计算机应用技术专业的研究生,热爱Android平台的开发,对于英文系列教程的翻译,本人也是第一次尝试,所以如果本系列教程的翻译如果令您感到不适或厌恶,请不要抛砖头,可以通过下面的方式告知,本人将不胜感激。

Author Jimmy
Email mingjun.su[at]gmail.com
Blog http://blog.youkuaiyun.com/sumingjun

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值