//首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
ContentValues values = new ContentValues();
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
// 往data表插入姓名数据
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);// 内容类型
values.put(StructuredName.GIVEN_NAME, name.getText().toString());
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
// 往data表插入电话数据
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, phone.getText().toString());
values.put(Phone.TYPE, Phone.TYPE_MOBILE);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
核心代码就是这一段,我还是有些不明白,为什么不能一次插入联系人名字和电话而要分两次插入呢?为什么要添加Data.MIMETYPE呢,难道它是not null项吗?。ContactsContract类里面的内容太多,看API看得我糊里糊涂。 以后希望能继续研究。