在使用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();
}
}
原文:http://blog.csdn.net/u010142437/article/details/18361967