2010-07-12 1 views
3

Я пытаюсь написать новый контакт с контактной базой данных в Android 2.1. Но я получаю следующее сообщение об ошибке:Запись контакта в контактную базу данных - Android 2.1

java.lang.UnsupportedOperationException: Aggregate contacts are created automatically. 

Я добавил следующие поля в манифесте:

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> 

Это мой код:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

String accountType = null; 
String accountName = null; 

Builder builder = ContentProviderOperation.newInsert(
ContactsContract.Contacts.CONTENT_URI); 
builder.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType); 
builder.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName); 

ContentProviderOperation op = builder.build(); 
Log.i("contacts", "op.getUri(): " + op.getUri()); 
ops.add(op); 

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(
     ContactsContract.Data.RAW_CONTACT_ID, 
     ops.size() 
    ) 
    .withValue(
     ContactsContract.Data.MIMETYPE, 
     StructuredName.CONTENT_ITEM_TYPE 
    ) 
    .withValue(StructuredName.DISPLAY_NAME, contact.getFullName()) 
    .build() 
); 

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(
     ContactsContract.Data.RAW_CONTACT_ID, 
     ops.size() 
    ) 
    .withValue(
     ContactsContract.Data.MIMETYPE, 
     ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE 
    ) 
    .withValue(
     ContactsContract.CommonDataKinds.Phone.NUMBER, 
     contact.getPhoneNumber() 
    ) 
    .build() 
); 

try { 
    this.cr.applyBatch(ContactsContract.AUTHORITY, ops); 
} 

ответ

2
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rowContactInsertIndex).withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER, cPhone).withValue(Phone.TYPE, cPhoneType).build()); 

это могло бы помочь вы. делать то же самое для полного имени, телефона и электронной почты тоже