0

我需要在联系人组中添加联系人。组已添加,但联系人未添加到组中。
这是我的代码。我认为异常发生在

ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID

但我不知道为什么..你能帮帮我吗?

ops.add(ContentProviderOperation
        .newInsert(ContactsContract.RawContacts.CONTENT_URI)
        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE,accountType)
        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME,accountName)
        .build());

ops.add(ContentProviderOperation
        .newAssertQuery(ContactsContract.Groups.CONTENT_URI)
        .withValueBackReference(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, 0)
        .withSelection(ContactsContract.Groups.TITLE + "=?", new String[]{grupo})
        .withExpectedCount(1)
        .build());

ops.add(ContentProviderOperation
        .newInsert(ContactsContract.Data.CONTENT_URI)
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
        .withValue(ContactsContract.Data.MIMETYPE,           
                   ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
        .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, nome)
        .build());

ops.add(ContentProviderOperation
        .newInsert(ContactsContract.Data.CONTENT_URI)
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
        .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.
                   CommonDataKinds.Email.CONTENT_ITEM_TYPE)
        .withValue(ContactsContract.CommonDataKinds.Email.DATA1, mail)  
        .build());

ops.add(ContentProviderOperation
        .newInsert(ContactsContract.Data.CONTENT_URI)
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
        .withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, 0)
        .withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,    
                   ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
        .build());

try {
    resolver.applyBatch(ContactsContract.AUTHORITY, ops);
} catch(Exception e) {
    e.printStackTrace();
}       
4

1 回答 1

0

如果您传入任何它无法处理的数据,编写您正在调用的方法的人错误地决定抛出该异常。我建议咨询 javadocs 看看那里是否有解释。

这叫做检查前置条件;通过合同编程。

于 2012-06-13T11:08:22.183 回答