获取“java.lang.illegalArgumentException:invalid data data1”

时间:2012-06-13 11:06:00

标签: android android-contentprovider android-contacts contactscontract

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

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();
}       

1 个答案:

答案 0 :(得分:0)

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

它被称为检查前提条件;合同编程。