博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
管理系统联系人之补充
阅读量:4258 次
发布时间:2019-05-26

本文共 4281 字,大约阅读时间需要 14 分钟。

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

在一文中介绍了对联系人的增加、查询。在本文将补充对联系人的修改和删除操作。下面使用到的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();		int index = name.length() / 2;		String displayName = name;		String givenName = null;		String familyName = null;		values.clear();		// 检查是否是英文名称		if (TextUtil.isEnglishName(displayName) == false) {			givenName = name.substring(index);			familyName = name.substring(0, index);		} else {			givenName = familyName = displayName;		}		values.put(StructuredName.DISPLAY_NAME, displayName);		values.put(StructuredName.GIVEN_NAME, givenName);		values.put(StructuredName.FAMILY_NAME, familyName);		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
ops = new ArrayList
(); 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(); } }

 TextUtil工具类:

package com.home.util;public class TextUtil {	/**	 * 检查是否是英文名称	 * 	 * @param name	 * @return	 */	public static boolean isEnglishName(String name) {		char[] nameChars = name.toCharArray();		for (int i = 0; i < nameChars.length; i++) {			if ((nameChars[i] >= 'a' && nameChars[i] <= 'z')					|| (nameChars[i] >= 'A' && nameChars[i] <= 'Z')) {				continue;			}			return false;		}		return true;	}}

另外补充完善一下添加联系人(之前在一文中的添加方法不完善):

/**	 * 新增联系人	 * 	 * @param name	 * @param number	 */	public void addContact(String name, String number) {		ContentValues contentValues = new ContentValues();		Uri uri = getContentResolver().insert(RawContacts.CONTENT_URI,				contentValues);		long rowId = ContentUris.parseId(uri);		// 插入姓名		if (name != null) {			contentValues.clear();			contentValues.put(Data.RAW_CONTACT_ID, rowId);			contentValues.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);			int index = name.length() / 2;			String displayName = name;			String givenName = null;			String familyName = null;			// 检查是否是英文名称			if (TextUtil.isEnglishName(displayName) == false) {				givenName = name.substring(index);				familyName = name.substring(0, index);			} else {				givenName = familyName = displayName;			}			contentValues.put(StructuredName.DISPLAY_NAME, displayName);			contentValues.put(StructuredName.GIVEN_NAME, givenName);			contentValues.put(StructuredName.FAMILY_NAME, familyName);			getContentResolver().insert(ContactsContract.Data.CONTENT_URI,					contentValues);		}		if (number != null) {			// 插入手机电话			contentValues.clear();			contentValues.put(Data.RAW_CONTACT_ID, rowId);			contentValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);			contentValues.put(Phone.NUMBER, number);			contentValues.put(Phone.TYPE, Phone.TYPE_MOBILE);			getContentResolver().insert(ContactsContract.Data.CONTENT_URI,					contentValues);		}	}

 

 

 

转载地址:http://pbvei.baihongyu.com/

你可能感兴趣的文章
Could not fetch specs from https://rubygems.org/
查看>>
oracle日志分析工具LogMiner使用
查看>>
数据仓库中捕获变化数据(CDC,Changed Data Capture)的四种手
查看>>
使用 PDI 和 Oracle CDC 来实现Oracle 数据库向其他数据库的数据同步
查看>>
oracle数据库是否归档和修改归档模式
查看>>
Oracle内存参数调优技术详解
查看>>
浅谈增值业务及双向运营支撑平台
查看>>
JMS开发指南
查看>>
在linux上执行远程命令(ssh、ftp)
查看>>
四大数据库性能比较
查看>>
andoird wifi 点对点连接笔记本的ad-hoc
查看>>
通过shell获取当前网络的出口IP地址(路由器外网IP)
查看>>
写给大家看的设计书阅读笔记1——设计的四大基本原则
查看>>
Makefile快速入门学习笔记
查看>>
Elasticsearch、Logstash 、kibana安装配置
查看>>
Spring Boot 解决跨域问题的 3 种方案!
查看>>
SQL 性能优化,开发注意事项
查看>>
logback配置文件模板
查看>>
指针函数和冒泡排序法算法案例
查看>>
批处理修改地址为静态和动态的方法
查看>>