2013-01-18 55 views
4

根据官方文档,当联系人的数据库中插入新的RawContact时,系统启动聚合机制以查找插入的RawContact将与其聚合的Contact当插入新的原始联系人时强制创建新联系人

在在联系人数据库中存在类似联系信息的插入RawContact将与现有Contact并且在不存在这样的信息的情况下被聚合系统将创建一个新的Contact和将聚集插入RawContact与它的情况下。

我已经通过ContactsContract.AggregationExceptionsContactsContract.Contacts.AggregationSuggestions已经看了,但还没有找到它可以帮助我弄清楚如何强制告诉系统创建一个新的Contact,当我在我的应用程序中插入一个新的RawContact的任何信息。

如果有人知道如何做到这一点,我会很高兴得到您的建议。

感谢

+0

我有一个类似的问题在这里,在4.0冰淇淋三明治,如果我插入一个RawContact(以@ SD规格)的SO不会触发的聚集,然而,在lillipop它做它的rawContact后得到第二次插入。更奇怪.... – DoruChidean

回答

4

要创建新的联系人,在ContactsContract.RawContacts插入值ACCOUNT_NAMEACCOUNT_TYPE,并获得新的行的_ID。然后用这个_ID插入联系人数据ContactsContract.Data时填RAW_CONTACT_ID

ContactsContract.RawContacts中的新_ID不应该已经存在,因此在ContactsContract.Data中插入/更新相应的数据之前不会有聚合。

ContactsContract.Contacts仅仅是一个自动汇总表,以方便数据的查询。你不应该直接改变它。