2010-07-14 59 views
0

这里有几件事情我无法弄清楚,并能找到其他人 张贴在讨论:问题与新老跟API

1. 在新的API

ContactsContract。 AggregationExceptions表并没有真正对 工作我:

当我尝试插入一行到表中,它给了我这个错误:

07-13 14:20:09.399: ERROR/XXXXX(3074): java.lang.UnsupportedOperationException: URI: content://com.android.contacts/aggregation_exceptions, calling user: ............

我的代码在这里:

ContentValues values = new ContentValues(); 

values.put(AggregationExceptions.RAW_CONTACT_ID1, 

String.valueOf(oldRawContactId)); 

values.put(AggregationExceptions.RAW_CONTACT_ID2, 

String.valueOf(newRawContactId)); 

values.put(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_TOGETHER); 

mContentResolver.insert(AggregationExceptions.CONTENT_URI, values); 

,我敢肯定,这两个原始接触式ID存在。

2.in旧的API:

当我创建通讯录一组,该组的名称将不显示(或不正确显示)

下面的代码:

ContentValues values = new ContentValues(); 

values.put(Contacts.Groups.SHOULD_SYNC, 1); 

values.put(Contacts.Groups.SYSTEM_ID, mGroupID); 

values.put(Contacts.Groups.NAME, mGroupTitle); 

mContentResolver.insert(Contacts.Groups.CONTENT_URI, values); 

3.in旧API:

当我插入用于接触一个自定义的IM联系人的方法,该数据被插入并正确显示,但使用d用户不能编辑的接触默认联系应用程序了。如果我删除了联系方式,用户可以再次编辑联系人。

这里的插入的联系方式的代码:

ContentValues values = new ContentValues(); 

values.put(ContactMethods.PERSON_ID, newContactId); 

values.put(ContactMethods.KIND, Contacts.KIND_IM); 

values.put(ContactMethods.TYPE, ContactMethods.TYPE_CUSTOM); 

values.put(ContactMethods.AUX_DATA, ContactMethods.encodeCustomImProtocol(MYIM_PROTOCOL)); 

values.put(ContactMethods.DATA, buddyId); 

values.put(ContactMethods.ISPRIMARY, 0); 

values.put(ContactMethods.LABEL, IM_LABEL); 

mContentResolver.insert(ContactMethods.CONTENT_URI, values); 

回答

2

AggregationExceptions不支持插入或删除,只更新。做一个更新,它会,“只是工作。” javadoc解释了这一点:

Constants for the contact aggregation exceptions table, which contains aggregation rules overriding those used by automatic aggregation. This type only supports query and update. Neither insert nor delete are supported.