Im trying to add a phone number to an already existing contact on a Droid-phone. Doing it at the same time as I create a contact is trivial, as the backreference I supply si
I've had a similar problem with email addresses. Here's the solution I used that worked:
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValue(Data.RAW_CONTACT_ID, id)
.withValue(Email.DATA, value)
.withValue(Email.MIMETYPE, .Email.CONTENT_ITEM_TYPE)
.withValue(Email.LABEL, label)
.withValue(Email.TYPE, Email.TYPE_CUSTOM)
.build());
ContentProviderResult[] res = cr.applyBatch(ContactsContract.AUTHORITY, ops);
The same solution should work for telephone numbers.
These links may provide some help:
http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/1/
http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/ContactAdder.html
I found an answer. It is not atomic if you want to add several things right away, but hey, who needs stupid atomicity?
ContentValues values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, new Integer(contactId).intValue());
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, dataValue);
values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
values.put(Phone.LABEL, customLabel);
Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);