在使用ContentProvider管理联系人一文中介绍了对联系人的增加、查询。在本文将补充对联系人的修改和删除操作。下面使用到的contactId均是在基本表即ContactsContract.Contacts.CONTENT_URI里面查询出来的ID,代码如下:
删除联系人信息:
/** * 删除联系人信息 * * @param contactId * @return */ public int deleteContact(int contactId) { Uri uri = ContentUris.withAppendedId( ContactsContract.Contacts.CONTENT_URI, contactId); int count = getContentResolver().delete(uri, null, null); return count; }
修改联系人姓名:
/** * 修改联系人姓名 * * @param contactId * @param name * @return */ public int updateContactName(int contactId, String name) { ContentValues values = new ContentValues(); values.put(StructuredName.DISPLAY_NAME, name); int count = getContentResolver() .update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.CONTACT_ID + "=?" + "AND " + ContactsContract.Data.MIMETYPE + " = ?", new String[] { contactId + "", StructuredName.CONTENT_ITEM_TYPE }); return count; }
当然增、删、改、查都可以使用ContentProviderOperation类来完成,如:
修改手机号码:
/** * 修改手机号码 * * @param contactId * @param number */ public void updateContactNumber(int contactId, String number) { ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); ops.add(ContentProviderOperation .newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection( ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?" + " AND " + ContactsContract.CommonDataKinds.Organization.TYPE + "=?", new String[] { contactId + "", ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) }) .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number).build()); try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); } catch (RemoteException e) { e.printStackTrace(); } catch (OperationApplicationException e) { e.printStackTrace(); } }