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 に答える