文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei。
当我们创建一个raw contact的时候,我们可以控制是否允许和其他raw contact进行整合,在raw_contacts表中有一个字段aggregation_mode,缺省为0。有下面三个数值,顾名思义,就是要整合,禁止整合、采用缺省策略。
TYPE_KEEP_TOGETHER
、TYPE_KEEP_SEPARATE
、TYPE_AUTOMATIC
我们也可以指明某两个raw contacts是属于同一个整合联系人。在表格agg_exceptions中记录这些信息。agg_exceptions表格的URI为
。该表格的格式如下:ContactsContract.AggregationExceptions.CONTENT_URI
CREATE TABLE agg_exceptions
(_id INTEGER PRIMARY KEY AUTOINCREMENT,
type INTEGER NOT NULL,
raw_contact_id1 INTEGER REFERENCES raw_contacts(_id),
raw_contact_id2 INTEGER REFERENCES raw_contacts(_id))
相关字段的java定义,可以在类ContactsContract.AggregationExceptions
中查到。如果有N个要智能整合,那就是A和B整合,A和C整合,就是A、B、C要整合。
在Android的联系人需要和云端的同步,例如Gmail联系人。因此在删除某个整合联系人的时候,需要删除相关的raw contact,这是将其标记为deleted,当云端同步后,再将之从设备中永久删除。
相关链接: 我的Android开发相关文章