昨天没有写delete/update/insert,今天又试了一下。
我的需求不是整个新建联系人,是在现有联系人的基础上新增一个字段。
所以代码应该是:
values.put(Data.RAW_CONTACT_ID, Long.toString(1)); values.put(Data.MIMETYPE, CommonDataKinds.Email.CONTENT_ITEM_TYPE); values.put(CommonDataKinds.Email.TYPE,CommonDataKinds.Email.TYPE_HOME); values.put(CommonDataKinds.Email.DATA, "test2333@example.com"); getContentResolver().insert(Data.CONTENT_URI, values);
修改也可以:
values.put(Data.RAW_CONTACT_ID, Long.toString(1)); values.put(Data.MIMETYPE, CommonDataKinds.Im.CONTENT_ITEM_TYPE); values.put(CommonDataKinds.Im.PROTOCOL,CommonDataKinds.Im.PROTOCOL_JABBER); values.put(CommonDataKinds.Im.DATA, "1001"); getContentResolver().update(Data.CONTENT_URI, values,CommonDataKinds.Im.DATA+"=3214",new String[]{});
这个Data.RAW_CONTACT_ID很重要,我开始写成Data.CONTACT_ID,就错了。
在API中也看到了这个RawContacts,尝试了一下,如何从头建立一个联系人的记录,如下:
ContentValues values = new ContentValues(); //values.put(Contacts.DISPLAY_NAME, "TCL"); Uri newURI=getContentResolver().insert(RawContacts.CONTENT_URI, values); Log.d(TAG,"----uri is "+newURI); long nid = ContentUris.parseId(newURI); // long nid = values.getAsLong(RawContacts._ID); Log.d(TAG,"----nid is "+nid); // values.clear(); values.put(Data.RAW_CONTACT_ID, Long.toString(nid)); values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); values.put(StructuredName.DISPLAY_NAME, "TCL-B"); getContentResolver().insert(Data.CONTENT_URI, values); values.clear(); values.put(Data.RAW_CONTACT_ID, Long.toString(nid)); values.put(Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE); values.put(CommonDataKinds.Phone.TYPE,CommonDataKinds.Phone.TYPE_MOBILE); values.put(CommonDataKinds.Phone.DATA, "1390005");getContentResolver().insert(Data.CONTENT_URI, values);