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

问题描述 投票:0回答:1

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

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();
}       
android android-contentprovider android-contacts contactscontract
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.