Android调用系统邮件类应用的正确实现方法
来源:互联网 发布:字体设计软件 编辑:程序博客网 时间:2024/05/16 10:34
http://blog.csdn.net/asce1885/article/details/8119898
Android应用开发中,很多情况下免不了要调用手机上的邮件类应用,实现邮件发送的功能,这一般是通过调用系统已有的Intent来实现的。看到网上很多邮件发送都是调用action为android.content.Intent.ACTION_SEND的Intent来实现的,下面我们就来看下这种方式实现的效果如何。
【使用Intent.ACTION_SEND方式】
具体的UI搭建我就不说了,很easy,直接看下发送的核心代码就行:
上面代码的效果如下图所示,将会拉起不止邮件类应用,这是很坑爹的事情,用户体验相当差。从上面结果可以看出,ACTION_SEND不是首选的方案,更好的方案是能够过滤非邮件类应用,只识别邮件类应用。这可以通过使用另外一个action来实现的。
【使用Intent.ACTION_SENDTO方式】
核心代码如下:
效果图如下所示:
当手机上只有一个匹配的邮件类应用时,系统将不会弹出ChooserActivity,供用户从候选的应用中挑选一个,而是直接跳转到匹配的那个应用去。这时查看Eclipse的logcat可以发现,出现如下异常信息:
但是,当系统中存在多于一个的匹配应用时,会弹出ChooserActivity,让用户选择一个应用发送邮件,这时查看logcat不会出现之前的异常。这又是为何呢?
【ChooserActivity的bug】
从异常信息中可以看出,代码在某个地方注册了IntentReceiver,但却没有代码去解除注册。具体原因是Android源码的一个bug,但不影响正常功能,因此可忽略之。想知道详细原因的可以自己查看Android源码。下图是stackoverflow上面的解答,可参考之。
网址:
http://stackoverflow.com/questions/10068954/why-does-intent-createchooser-need-a-broadcastreceiver-and-how-to-implement/10290486#10290486
Demo源码地址: http://download.csdn.net/detail/ace1985/4695230
- Android调用系统邮件类应用的正确实现方法
- Android调用系统邮件类应用的正确实现方法
- Android 调用系统邮件类应用
- Android调用系统的发邮件方法
- Android调用系统的发邮件方法
- 调用系统发邮件的实现
- android 调用系统其他已经安装的应用的方法
- Android 应用正确关闭GPS的方法
- android应用调用系统相关设置的方法
- android应用调用系统相关设置的方法
- Android不同系统版本依然能调用到正确的API方法Demo——Service调用startForeground举例
- android调用系统的分享功能实现分享到短信,邮件和其他
- Android 调用系统邮件程序发送邮件
- 调用android系统邮件发送邮件
- Android调用系统邮件,短信
- 调用Android 7.0系统摄像头的正确姿势
- iOS系统邮件 短信 电话 网页的调用方法
- Android java方法实现调用系统属性
- Memcached之——Memcached与Spring提供的cache接口整合
- 二分法查找C++实现
- 混合开发的大趋势之 一个Android程序员眼中的 React.js 块级作用域 和 let
- 表单元素form之input
- build.gradle配置参数详解
- Android调用系统邮件类应用的正确实现方法
- python挑战之level 22
- Python数据可视化:泊松分布
- python中安装机器学习(sklearn)必要的包和模块
- TCP/IP通信或串口通信数据校验
- Centos 6.5 在线安装 Mysql 5.7.15
- UITableView一键滑到最顶部、底部
- iOS http 请求
- 如何在win764位操作系统上,如何完成C#短信模块的开发