联系人去重

1.查询重复联系人时,progress的显示

1.1查询Rowcontacts表(RawContacts.DELETED+”= 0”),获得联系人总数。

1.2SearchDuplicatedThread,开线程去查询重复联系人。

1)查询account表,获得account list,遍历account 去查询RawContacts,

计算可以merge的联系人组。

获得map, name为key, value 为list,存放rawid。

2)根据map,筛选出list size >=2的(可根据list的size进行进度跟新),根据list中的id 查询raw_contact_entities 表,

获得EntityIterator(每个entity封装同名联系人的raw信息)。

3)根据EntityIterator获得 ArrayList mSubValues,

遍历该list,获得其元素的MIMETYPE,通过MIMETYPE形成phoneList and emailList 等信息。

进行封装形成一个ContactsInfo对象。

形成一个ContactsInfo 的List,封装为一个MergeContacts。

4)对于sim account的联系人需要考虑mergePhoneList/mergeEmailList

oneSimAnrCount/oneSimEmailCount

e.g.对于number:
通过遍历mergePhoneList 使用PhoneNumberUtils.compare()和data1进行比较。
最终比较mergePhoneList的size和oneSimAnrCount+1的大小。
若mergePhoneList.size()>oneSimAnrCount+1, 则认为不可merge, 不new MergeContacts.

ContactsInfo(1..1)

MergeContacts(1..n)

2.查重 ok,show MergeContactActivity

根据MergeContacts 的list去show UI。
MergeContacts 的mChecked属性对应checkbox是否被选中。
点击merge menu进行merge 操作.

3.dup 联系人merge 的过程

3.1 progress的显示, 根据list 的size的完成度去进行显示

3.2 开线程MergeDuplicatedThread执行merge
区分account进行操作:
if simcontacts,获取首个(i = 0)联系人信息作为sourceContact.
后续加入delRawIdsMap(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值