Android通信相关-联系人-导入导出联系人

对于Android手机来说,通信是一大块功能。APP层包括联系人、短信、拨号、InCallUI。framework层包括Telephony、Telecom、PhoneGlobal、RIL等,底层又涉及到通信模块,AT命令等,几大功能互相独立却又缠绕在一起,想要了解透彻非常复杂。

希望再接下来半年时间内能把这一块吃透

当然要吧整体的流程和架构了解清楚,但是想要做这一领域的专家,光这些还不够,关注一些具体的功能点,可以更加方便的理解和解决实际的问题,也能更好的理解流程和架构的设计思路,而且方便进行分析

最近解一个将手机联系人导入到SD卡失败的问题,特将分析思路整理如下

一、涉及主要文件

PeopleActivity.java

ContactsPreferenceActivity.java   DisplayOptionsPreferenceFragment.java

ContactImportExportActivity.java

ContactListMultiChoiceActivity.java    MultiDuplicationPickerFragment.java

ExportVCardActivity.java

VCardService.java

ExportProcessor.java

NotificationImportExportListener.java

 

 

导入到内置存储是正常的,导入到外置SD卡失败,所以这里保存的路径很重要,沿着这个思路,分析文件跳转流程,即可以找到路径的获取与流转再到最后的使用

setShowingStep

ContactImportExportActivity:  onclick->onNextAction()->doImportExport()->handleImportExportAction()

联系人数据都在这个文件中获取,并使用LoaderCallbacks进行加载,这里要了解LoaderCallbacks的用法

ContactListMultiChoiceActivity:onOptionAction

->MultiDuplicationPickerFragment:  onOptionAction->doExportVCardToSDCard()

->ExportVCardActivity: onServiceConnected

->VCardService:handleRequestAvailableExportDestination->handleExportRequest

->NotificationImportExportListener:onExportProcessed

ExportProcessor: run->runInternal()

最终这里报了错outputStream = mResolver.openOutputStream(uri);   

08-16 15:00:56.925  1085  3930 W ContactsApp/ExportProcessor: FileNotFoundException thrown
08-16 15:00:56.925  1085  3930 W ContactsApp/ExportProcessor: java.io.FileNotFoundException: open failed: EACCES (Permission denied)

AndroidP对系统应用读取SD卡有限制,该问题在另一篇文章中分析

 

写得有点乱,暂时先这样,后续等我学了画流程图的工具再优化

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值