NoticationMgr对于未接来电的处理.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NoticationMgr对于未接来电的处理

NoticationMgr对于未接来电的处理通过本文档将要学习Android KK和Android L两大版本对于未接来电逻辑处理上的差异,这个差异主要体现在架构设计。主要是通过以下三个方面:取消未接来电的通知;有未接来电时的通知;开机显示未接来电的能知;Android KK版本对未接来电(Missed call)的处理取消未接来电的通知当有未接来电时显示未接来电的通知当有未接来电时显示未接来电的通知是由CallNotifier的onDisconnect方法调用NotificationMgr的notifyMissedCall方法,第8行调用PhoneGlobals.createCallLogIntent方法获得拉起通话记录的intent,第16行的mNumberMissedCalls++未接来电计数器自增1,第20至第27行是设置显示的信息只有一个未接来电时,会显示“未接来电/XX”,XX是联系人的姓名或号码,有多个未接来电时,会显示“未接来电/n个未接来电”,当只有一个未接来电时,且号码有效时,增加两个action,即“回拨”、“发信息”,当参数phoneIcon或photo不为null时,还可以设置在托盘中显示的大图标。最后调用NotificationManager的notify方法在托盘中显示未接来电通知开机后显示未接来电通知当Phone应用启动的时候在PhoneGlobals的onCreate方法中调用NotificationMgr的init方法进行初始化,接着调用updateNotificationAtStartup方法在NotificationMgr的updateNotificationAtStartup方法中实例化QueryHandler,主要用于查询通话记录、联系人等信息,第10至12行是设置查询的条件,第16行调用QueryHandler的startQuery方法执行查询,注意在调用startQuery方法的第一个参数CALL_LOG_TOKEN,此查询是异步执行的。整体介绍一个QueryHandler的结构,QueryHandler是异常查询处理器,主要完成查询通话记录,根据通话记录查询联系人,加载联系人的头像NotificationInfo用于存储查询出来的未接来电的基本信息通话记录完成后回调onQueryComplete方法,在调用startQuery时传入的第一个参数是CALL_LOG_TOKEN,所以此时case CALL_LOG_TOKEN满足,调用getNotificationInfo方法,将cursor中的信息构造一个NotificationInfo的实例,再次调用QueryHandler的startQuery方法查询通话记录是否存在对应的联系人信息,传入的第一个参数是CONTACT_TOKEN,调用getNotificationInfo方法,将cursor中的信息构造一个NotificationInfo的实例联系人信息查询完成后回调onQueryComplete方法,token是CONTACT_TOKEN,对于是一个默生的号码(通讯录人不存在对应的联系人信息)时直接调用notifyMissedCall方法在托盘显示未接来电通知,如果存在对应的联系人信息通过调ContactAsyncHelper的startObtainPhotoAsync方法获取对应联系人的头像,QueryHandler已实现了ContactAsyncHelper的OnImageLoadCompleteListener接口,所以联系人头像加载完成后回调QueryHandler的onImageLoadComplete方法,当联系人的头像加载完成后,回调onImageLoadComplete方法,最终调用notifyMissedCall方法在托盘中显示未接来电通知。Android L 未接来电的处理未接来电的处理逻辑由Android KK 版本的TeleService转移到Android L版本的Telecom中处理,但是在TeleService中仍然保留了KK版本的NotificationMgr类的代码,但如Android KK版本对外的接口已经不存在了。取消未接来电的通知第三方的应用可以通过调用TelecomManager类的cancelMissedCallsNotification方法取消未接来电的消息通知,看到cancelMissedCallsNotification的方法的命名应该感到很nice吧,这个就是将Android KK中TelephonyManager中移植过来的。publicclass TelecomManager {......publicvoid cancelMissedCallsNotification

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档