Android原生模块Email分析_第1页
Android原生模块Email分析_第2页
Android原生模块Email分析_第3页
Android原生模块Email分析_第4页
Android原生模块Email分析_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——Android原生模块Email分析

Email总结文档

目录:src\\com.android.email.activity

1.Welcome.java

根据AndroidManifest.xml可知该文件为程序入口文件:

加载该文件时,查询数据库账户列表信息。假使查询出没有账户信息,则跳转到设置账户界面:AccountSetupBasics。查询出一条账户信息,将该账户的id传到下一个activity(MessageList)中,显示message列表。查询出多条账户信息,跳转到AcountFolderList中显示账户列表信息和MailBox列表信息。

2.acountFolderList+accountFolderListItem:

这两个类一同构成一个账户邮件箱列表的界面。该界面中,分为邮件箱列表和账户列表。

邮件箱列表:四种邮件箱:联合的收件箱,草稿箱,发件箱,标记星星箱。假使邮件箱中邮件个数为0,那么不显示该邮件箱类别。

账户信息列表:显示数据库中已配置的账户。

两个列表是同样的Layout,但是针对两个列表有两个不同的Menu。点击任何一个Item跳转到下一界面:MessageList。

邮箱信息列表和账户信息列表

1.首先该界面主要是一个listView,每个item都有一样的layout。填充Item:在使用CursorAdapter绑定cursor数据时,使用LayoutInflater为所有的item创立一个view,然后在将该view传到bindViewItem()方法中进行数据绑定。2.Item在显示上分为两种:mailBox和账户列表。根据类型显示隐蔽所需控件。

在LoadAccountsTask()异步加载方法中实现信息加载:

邮箱信息列表:从数据库中查出该类别的mailbox是否有邮件。若没有则没

有该类型的item。不同类别的cursor信息存放到MatrixCursor中。账户信息列表:查询账户列表

3.两个menu控件(充当三个menu用):ContextMenu:根据点击ItemPosition来判断弹出menu的内容。分为邮箱信

息和账户信息,点击menu后执行事件处理方法

三个menu控件都有自己的layout布局文件,使用activity类中的方法getMenuInflater()来填充不同menu的layout

4.在UI线程外,使用AsyncTask类,异步加载账户信息,异步删除账户信息(LoadAccountsTask,DeleteAccountTask)

5.删除账户信息使用托管对话框的形式创立Dialog,showDialog触发对onCreateDialog()方法的调用,由于对话框只创立一次所以通过回调onPrepareDialog()方法来实现对话框内容得更改。

6.accountFolderListItem这个类的作用是创立一个虚拟的ListItem,这样可以创立虚拟的Button来处理item的单击事件,这里处理的是账户文件夹7.输入“debug〞后,跳转到debug界面8.这个activity同时了Activity,实现了onClickListener。通过setListener(this)方法为控件绑定Listener。在方法onClick中,使用switch(Id)来判断点击的控件,设置其点击事件。

9.删除账户信息中使用store,以及controllerResult的使用不明白,待继续研究

3.messageList+messageListItem邮件列表

邮件信息列表,该界面显示了特定账户邮件列表。

点击Item可查看该邮件的具体信息,即进入MessageView界面。每个Item都有一致的Menu。

点击左边的checkBox会弹出pannel中的Button,对选中的邮件进行响应处理。点击任何一个item都会进入下一个界面:messageView。

1.生命周期函数

2.contextMenu的实现和其单击事件

contextMenu六种单击事件:开启,删除,forward,回复,回复全部,

标记为未读

3.更新邮箱列表:1.点击checkBox,后在footer中显示的refresh2.定时更新邮件箱(设置更新频率)

4.optionMenu的实现和单击事件,optionMenu五种点击事件:refresh,compose,folder,account,accoutnSettting

5.Item多项选择时,button控件容器pannel的显示隐蔽,以及pannel中三个Button

的单击事件:标记未读,删除,添加星星标记

6.消息处理:进度条、中止异步task、连接错误横幅(MessageListHandler)7.异步处理:加载Message,设置标题(Inbox、Draft、Send和账户名等)8.使用adapter将数据绑定到listView9.messageListItem类创立虚拟的ListItem,是对单击checkBox和star进行位置捕获

10.在这里footerMode有四种模式:就是在邮件列表的终止的时候会显示footLIST_FOOTER_MODE_REFRESH:查看联合收件箱,未读邮件,星星标记邮件时会显示该模式,点击该footer会执行Refresh方法。

LIST_FOOTER_MODE_MORE:IMAP,POP模式,查看固定的账户的收件箱LIST_FOOTER_MODE_SEND:查看发件箱

LIST_FOOTER_MODE_NONE:查看草稿箱。EAS模式,从来不希望发生。

4.messageCompose发件箱

发件箱:实现邮件的发送,添加附件,存草稿,放弃等行为

1.发送邮件的五种方式:

1.使用给定的账户发送消息,假使该账户是-1则给默认的额账户发送消息2.给mailto中的uri的账户发送信3.回复(回复全部)发送信息

4.转发

5.从草稿箱恢复邮件,再发送2.onCreate初始化控件:

为具体控件设置Listener,为Mailto,cc,bcc设置adapter,validator,Tokenizer(编译器:Rfc822Tokenizer)3.异步加载Messages(LoadMessageTask)

异步加载信息,需要加载及设置Accout信息,以及显示原Message等1.当回复,回复全部,转发时,直接设置Message

2.若从草稿箱重新恢复compose,在异步方法中再异步加载原来带有的附件3.前台处理:发送(发送后保存邮件)、保存邮件为草稿、放弃

4.使用InputFilter来验证address,发送合法地址信息

5.从contentProvider的共享数据中,添加附件,加载附件后设置添加附件后的界面。也对删除附件进行处理。

6.回复,转发时参与QuotedText(即邮件的原信息界面)7.初始化MailTo(加载Intent的时候):initFromIntent()从Intent中解析出mailto,cc,bcc,主题,正文(body)8.设置额外的格式信息:

如回复时,主题前要加Re,转发主题加Fwd9.设置OptionMenu及其单击事件

5.MessageView:显示邮件信息

1.handler处理消息:邮件带附件,点击open的一系列消息处理

Progress,finish_load_attachment,enable,error等

1.onCreate方法:控件的初始化,为控件绑定监听器等

1.单击发件地址,将会添加该联系人(假使已存在则跳转都QuickContact

界面):跳转到Contact界面。该界面是android自带的应用程序,会将发件人作为联系人添加到联系人中。这里要设置Uri和action

2.设置右边favorite星星,foot中的回复,全部恢复,删除的监听器3.点击标题导航ImageButton,跳转到上下邮件

4.监控邮件列表是否有变化,实现?ContentObserver()。共有四个layout:

1.message_view:主界面,上面两个跳转ImageButton,

中套message_view_header

下面三个replay,replayall,delete按钮

2.message_view_header:主题时间日期,以及body,webView3.message_view_invitation:会议邀请???

4.message_view_attachment:附件

2.从Intent中初始化:得到MessageId、MailboxId、是否可以回复和转发3.activity生命周期函数回调Controller方法

在destroy中,关闭所有正在执行的Task(cancelAllTasks)4.创立optionMenu及其单击事件。5.异步加载Message,加载MessageBody6.异步加载附件:从附件中复制数据到UI中

7.异步加载MessageList,查找后退前进的邮件Id,查找到Id后,假使点击了前进或者后退,那么会异步加载Message,以及Message的Body

6.MailboxList:显示邮件箱列表:草稿箱,垃圾箱,未读邮件

1.Oncreate初始化控件

2.异步加载账户信息,用于显示标题

3.消息处理:未完成加载信息、加载信息出错4.异步加载邮箱类别信息:

DB查询所有类别邮箱的信息,分类设置。异步查询每个邮件箱的message数量

4.创立adapter,使用Inflater将数据绑定到View上7.敲入“Debug〞

1.允许敏感信息调试登录(肯能将密码显示在日志上)2.允许交换分析器登录(特别冗长)3.允许交换sd卡登录

8.以下功能类不懂,也未找到关联类:

AccountShortcutPicker.java与Email.java类关联,未作研究

AddressTextView.javaProgressListener.javaUpgradeAccounts.java

上面的基本功能类中,使用了大量外部类:观测import

常用的如controller,Email,Utility,EmailContent,Address都未对他们做深入研究

目录:src\\com.android.email.activity.setup

1.AccountSetupBasics.java:设置新账户界面,输入账户名和密码

假使是设置其次个账户,那么可设置该账户为默认发送邮件的账户。输入账户名后,若DB查询该账户时候已存在,存在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论