`
mjbb
  • 浏览: 88852 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Contact 联系人工具类(一)

阅读更多
从数据库中取出数据封装成对象:

package com.litsoft.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.ContentResolver;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.provider.ContactsContract.CommonDataKinds.Note;
import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;

import com.litsoft.domain.Contact2;

public class DB2ContactUtil {
	public static ContentResolver resolver;
	public static String numberSplit="NO";
	public static String emailSplit=";";
	/**
	 * 删除一个
	 */
	public static void  deleteById(String contactId ){
		 resolver.delete(Data.CONTENT_URI, ContactsContract.Data.CONTACT_ID + "=" + contactId, null);
		 resolver.delete(RawContacts.CONTENT_URI, RawContacts.CONTACT_ID + "=" + contactId, null);
	}
	/**
	 * 删除所有的 Contact
	 */
	public static void deleteAll(){
		 resolver.delete(Data.CONTENT_URI, null, null);
		 resolver.delete(RawContacts.CONTENT_URI, null, null);
	}
	/**
	 * 获得所有的Contact
	 * @return
	 */
	public static List<Contact2> getAllContact(){
		List<Contact2> contactList = new ArrayList<Contact2>();
		ArrayList<String> idList = getContactIdList();
		Contact2 newContact ;
		for(String contactId:idList){
			newContact = new Contact2();
			newContact.setId(contactId);
			//1.头像
			newContact.setContactIcon(getContactIcon(contactId));
			//2.名字
			newContact.setName(getName(contactId));
			//3.电话
			newContact.setPhoneNumberMap(getPhoneNumber(contactId));
			//4.Email
			newContact.setEmailMap(getEmail(contactId));
			//5.im
			newContact.setImMap(getAIM(contactId));
			//6.add
			newContact.setAddrMap(getAddressDetail(contactId));
			//7.organization
			newContact.setOrganizationMap(getOrganizations(contactId));
			//8.notes
			newContact.setNotes(getNotes(contactId));
			//9.nickname
			newContact.setNicks(getNick(contactId));
			//10.website
			newContact.setWebsites(getWebsite(contactId));
			
			contactList.add(newContact);
		}
		return contactList;
	}
	/**
	 * 根据id 获得 头像
	 * @param contactId
	 * @return
	 */
	public static byte[] getContactIcon(String contactId){
		byte[] image = null;
		Cursor cursor = resolver.query(Data.CONTENT_URI, null,
				Photo.CONTACT_ID + " = " + contactId + " and " + Data.MIMETYPE
				+ " = '" + Photo.CONTENT_ITEM_TYPE+"'", null, null);
		if(cursor.moveToNext()){
			image = cursor.getBlob(cursor.getColumnIndex(Photo.PHOTO));
		}
		return image;
	}
	/**
	 * 根据Id 得到 familyName 和 giveName [1,0]
	 */
	public static  String[] getName(String contactId){
		String name[] = new String[2];
		Cursor cursor = resolver.query(Data.CONTENT_URI, null,
				StructuredName.CONTACT_ID + " = " + contactId + " and " + Data.MIMETYPE
				+ " = '" + StructuredName.CONTENT_ITEM_TYPE+"'", null, null);
		while(cursor.moveToNext()){
			name[1]= cursor.getString(cursor.getColumnIndex(StructuredName.FAMILY_NAME));
			name[0] = cursor.getString(cursor.getColumnIndex(StructuredName.GIVEN_NAME));	
		}
		System.out.println("give name :" + name[0] + " famliy name :" + name[1]);
		return name;
	}
	
	/**
	 * 获得所有联系人的id列表
	 */
	public static ArrayList<String> getContactIdList() {
		ArrayList<String> contactIdList = new ArrayList<String>();
		Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
		String id = "";
		while (cursor.moveToNext()) {
			id = cursor.getString(cursor.getColumnIndex(Contacts._ID));
			contactIdList.add(id);
			System.out.println("contractId is :"+id);
		}
		return contactIdList;
	}
	
	/**
	 * 根据用户Id 电话号码
	 * 
	 * @param contactId key{1,2,3,7} ==={home,mobile,work,other}
	 * @return
	 */
	public static Map<String,String> getPhoneNumber(String contactId) {
		Map<String,String> phoneNumberMap = new HashMap<String, String>();
		String value = "";
		String key ="";
		Cursor phones = resolver.query(Phone.CONTENT_URI, null,
				Phone.CONTACT_ID + " = " + contactId, null, null);
		while (phones.moveToNext()) {
			key = phones.getString(phones.getColumnIndex(Phone.DATA2));
			value = phones.getString(phones.getColumnIndex(Phone.DATA1));
			if("7".equals(key)){
				String v = phoneNumberMap.get(key);
				if(v!=null&&!"".equals(v)){
					value = v+numberSplit+ value;
				}
			}
			phoneNumberMap.put(key, value);
			System.out.println("number type is :" + key + " number is :" + value);
		}
		
		return phoneNumberMap;
	}
	
	/**
	 * 根据用户Id  获得email 
	 * key {1,2,3,4} =={home,work,other, mobile }
	 * 
	 */
	public static Map<String,String> getEmail(String contactId) {
		Map<String,String> emailMap = new HashMap<String, String>();
		String key = "";
		String value = "";
		Cursor emails = resolver.query(Email.CONTENT_URI, null,
				Email.CONTACT_ID + " = " + contactId, null, null);
		while (emails.moveToNext()) {
			
			key = emails.getString(emails.getColumnIndex(Email.DATA2));
			value = emails.getString(emails.getColumnIndex(Email.DATA1));
			if("4".equals(key)){
				String v = emailMap.get(key);
				if(v!=null&&!"".equals(v)){
					value = v+emailSplit+ value;
				}
			}
			emailMap.put(key, value);
			System.out.println("email type is :" + key + " email is :" + value);
		}
		return emailMap;
	}
	/**
	 * 根据用户Id获得 AIM
	 * key {0,1,2,3,4,5,6,7} == {aim,live,yahoo,skyp,qq,gtalk,icq,jabber}
	 * @param contactId 
	 * @return 
	 */
	public static Map<String,String> getAIM(String contactId) {
		Map<String,String> im =new HashMap<String,String>();
		String key;
		String value;
		String selection = Im.CONTACT_ID + " = " + contactId //获得联系人的具体id    
		+ " and " + Data.MIMETYPE + " = '" + CommonDataKinds.Im.CONTENT_ITEM_TYPE+"'";
		Cursor cursor = resolver.query(Data.CONTENT_URI, null, selection, null, null);
		while(cursor.moveToNext()){
			key = cursor.getString(cursor.getColumnIndex(Im.DATA5));//判断im 不同种类
			value = cursor.getString(cursor.getColumnIndex(Im.DATA1));
			if("7".equals(key)){//jabber类型
				String v = im.get(key);
				if(v!=null&&!"".equals(v)){
					value = v+";"+ value;
				}
				
			}
			im.put(key, value);
			System.out.println("aimType :"+ key +" ; aim : " + value);
		}
		//System.out.println("aim : " + aim);
		return im;
	}

	//=======================================Map<String,List<String[]>>类型========================================
	/**
	 * 根据用户Id 获得 Address
	 * data4-data10 : {street pobox neigborbood city state zip country}==str[0-6]
	 * key {1,2,3} =={home,work,other}
	 */
	public static Map<String,List<String[]>> getAddressDetail(String contactId) {
		Map<String,List<String[]>> postalMap = new HashMap<String, List<String[]>>();
		String key;
		List<String[]> addrList;
		String addr[];
		Cursor adds = resolver
				.query(StructuredPostal.CONTENT_URI, null,
						StructuredPostal.CONTACT_ID + " = " + contactId, null, null);
		while (adds.moveToNext()) {
			key  = adds.getString(adds
					.getColumnIndex(StructuredPostal.DATA2));
			addr = new String[7];
			addr[0] = adds.getString(adds
					.getColumnIndex(StructuredPostal.STREET));
			addr[1] =adds.getString(adds
					.getColumnIndex(StructuredPostal.POBOX));//信箱号码
			addr[2] = adds.getString(adds
					.getColumnIndex(StructuredPostal.NEIGHBORHOOD));
			addr[3] = adds.getString(adds
					.getColumnIndex(StructuredPostal.CITY));
			addr[4]=adds.getString(adds
					.getColumnIndex(StructuredPostal.REGION));// 省份
			addr[5] =adds.getString(adds
					.getColumnIndex(StructuredPostal.POSTCODE));// 邮政编码
			addr[6] = adds.getString(adds
					.getColumnIndex(StructuredPostal.COUNTRY));
			addrList = postalMap.get(key);
			if(addrList!=null&&!addrList.isEmpty()){
				addrList.add(addr);
				postalMap.put(key, addrList);
			}else{
				addrList = new ArrayList<String[]>();	
				addrList.add(addr);
				postalMap.put(key, addrList);
			}
			System.out.println("address's type is :"+ key +" -- address: " + addr[0]+":"+ addr[1]+":"+addr[2]+":"+addr[3]+":"+addr[4]+":"+addr[5]+":"+addr[6]);
		}
		
		return postalMap;
	}
	/**
	 * 根据用户Id 获得 公司
	 * organization: Map<String,List> String 是数据类型  List 是一个数组:String [data1(company),data4(position)]
	 * key {1,2} ==={work ,other}
	 */
	public static Map<String,List<String[]>> getOrganizations(String contactId) {
		Map<String,List<String[]>> companyMap = new HashMap<String, List<String[]>>();
		String key = "";
		List<String[]> positionList;
		String pos[];
		
		Cursor organization = resolver.query(Data.CONTENT_URI, null,
				Data.CONTACT_ID + "=" + contactId + " AND " + Data.MIMETYPE
						+ "='" + Organization.CONTENT_ITEM_TYPE + "'", null,
				null);
		while (organization.moveToNext()) {
			pos =  new String[2];
			key = organization.getString(organization
					.getColumnIndex(CommonDataKinds.Organization.DATA2));
			pos[0] = organization.getString(organization
					.getColumnIndex(CommonDataKinds.Organization.COMPANY));
			pos[1] = organization.getString(organization
					.getColumnIndex(CommonDataKinds.Organization.TITLE));
			positionList = companyMap.get(key);
			if(positionList!=null&&!positionList.isEmpty()){
				positionList.add(pos);
				companyMap.put(key, positionList);
			}else{
				positionList = new ArrayList<String[]>();	
				positionList.add(pos);
				companyMap.put(key, positionList);
			}
//			positionList.add(pos);
			System.out.println("--------------------------------");
			System.out.println("type:" + key);
			System.out.println("company:" + pos[0]);
			System.out.println("position:" + pos[1]);
			
		}
		
			return companyMap;
		
	}
	//=========================================List<String> 数据类型===========================================
	/**
	 * 根据用户id 获得notes
	 */
	public static List<String> getNotes(String contactId) {
		List<String> notesList = new ArrayList<String>();
		String note = "";
		Cursor notes = resolver.query(Data.CONTENT_URI, null,
				Data.CONTACT_ID + "=" + contactId + " AND " + Data.MIMETYPE
						+ "='" + Note.CONTENT_ITEM_TYPE + "'",
				null, null);
		while (notes.moveToNext()) {
			note = notes
					.getString(notes
							.getColumnIndex(Note.NOTE));
			System.out.println("note :" + note);
			notesList.add(note);
		}
		return notesList;
	}
	/**
	 * 根据用户id 获得nicks
	 */
	public static List<String> getNick(String contactId) {
		List<String> nickList = new ArrayList<String>();
		String nick = "";
		Cursor nicks = resolver.query(Data.CONTENT_URI, null,
				Data.CONTACT_ID + "=" + contactId + " AND " + Data.MIMETYPE
						+ "='" + Nickname.CONTENT_ITEM_TYPE + "'",
				null, null);
		while (nicks.moveToNext()) {
			nick = nicks
					.getString(nicks
							.getColumnIndex(Nickname.DATA1));
			System.out.println("nick :" + nick);
			nickList.add(nick);
		}
		return nickList;
	}
	/**
	 * 根据用户id 获得website
	 */
	public static List<String> getWebsite(String contactId) {
		List<String> webSiteList = new ArrayList<String>();
		String webSite = "";
		Cursor nicks = resolver.query(Data.CONTENT_URI, null,
				Data.CONTACT_ID + "=" + contactId + " AND " + Data.MIMETYPE
						+ "='" + Website.CONTENT_ITEM_TYPE + "'",
				null, null);
		while (nicks.moveToNext()) {
			webSite = nicks
					.getString(nicks
							.getColumnIndex(Website.DATA1));
			webSiteList.add(webSite);
			System.out.println("webSite : "+ webSite);
		}
		return webSiteList;
	}
}

分享到:
评论
2 楼 greenboy1 2010-12-06  
非常好 谢谢
1 楼 bug_shi 2010-11-20  
import com.litsoft.domain.Contact2; 在那里啊,小的刚入门请指教。

相关推荐

    linux基础进阶笔记

    linux基础进阶笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4493093&spm_id_from=333.999.0.0&desc=1

    IMG20241115211541.jpg

    IMG20241115211541.jpg

    Sen2_ARI_median.txt

    GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载

    毕业设计&课设_基于 flask-whoosh-jieba 的代码,涉及文件管理及问题修复.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于springboot家政预约平台源码数据库文档.zip

    基于springboot家政预约平台源码数据库文档.zip

    Ucharts添加stack和折线图line的混合图

    Ucharts添加stack和折线图line的混合图

    基于springboot员工在线餐饮管理系统源码数据库文档.zip

    基于springboot员工在线餐饮管理系统源码数据库文档.zip

    2015-2021年新能源汽车分地区、分类型、分级别销量逐月数据和进出口数据-最新出炉.zip

    新能源汽车进出口数据 1、时间跨度:2018-2020年 2、指标说明:包含如下指标的进出口数据:混合动力客车(10座及以上)、纯电动客车(10座及以上)、非插电式混合动力乘用车、插电式混合动力乘用车、纯电动乘用车 二、新能源汽车进出口月销售数据(分地区、分类型、分 级别) 1、数据来源:见资料内说明 2、时间跨度:2014年1月-2021年5月 4、指标说明: 包含如下指标 2015年1月-2021年5月新能源乘用车终端月度销量(分类型)部分内容如下: 新能源乘用车(单月值、累计值 )、插电式混合动力 月度销量合计(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 月度销量同比增速(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 累计销量合计(狭义乘用车轿车、SUV、IPV、交叉型乘用车); 累计销量同比增速(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 累计结构变化(狭义乘用车轿车、SUV、IPV、交叉型乘用车); 2015年1月-2021年5月新能源乘用车终端月度销量(分地区)内容如下: 更多见资源内

    中心主题-241121215200.pdf

    中心主题-241121215200.pdf

    蓝奏云下载链接与密码整理

    内容概要:本文档提供了多个蓝奏云下载链接及其对应解压密码,帮助用户快速获取所需文件。 适合人群:需要从蓝奏云下载文件的互联网用户。 使用场景及目标:方便地记录并分享蓝奏云上文件的下载地址和密码,提高下载效率。 阅读建议:直接查看并使用提供的链接和密码即可。若遇到失效情况,请尝试联系上传者确认更新后的链接。

    Javaweb仓库管理系统项目源码.zip

    基于Java web 实现的仓库管理系统源码,适用于初学者了解Java web的开发过程以及仓库管理系统的实现。

    Python-文件重命名-自定义添加文字-重命名

    资源名称:Python-文件重命名-自定义添加文字-重命名 类型:windows—exe可执行工具 环境:Windows10或以上系统 功能: 1、点击按钮 "源原文"【浏览】表示:选择重命名的文件夹 2、点击按钮 "保存文件夹"【浏览】表示:保存的路径(为了方便可选择保存在 源文件中 ) 3、功能①:在【头部】添加自定义文字 4、功能②:在【尾部】添加自定义文字 5、功能③:输入源字符 ;输入替换字符 可以将源文件中的字符替换自定义的 6、功能④:自动加上编号_1 _2 _3 优点: 1、非常快的速度! 2、已打包—双击即用!无需安装! 3、自带GUI界面方便使用!

    JDK8安装包,为各位学习的朋友免费提供

    JDK8安装包

    Centos-7yum的rpm包

    配合作者 一同使用 作者地址没有次下载路径 https://blog.csdn.net/weixin_52372189/article/details/127471149?fromshare=blogdetail&sharetype=blogdetail&sharerId=127471149&sharerefer=PC&sharesource=weixin_45375332&sharefrom=from_link

    setup_python_geospatial_analysis.ipynb

    GEE训练教程

    毕业设计&课设_文成公主微信公众号全栈工程,含技术栈、架构及部署流程等内容.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于springboot交通感知与车路协同系统源码数据库文档.zip

    基于springboot交通感知与车路协同系统源码数据库文档.zip

    基于springboot+vue 雅妮电影票购买系统源码数据库文档.zip

    基于springboot+vue 雅妮电影票购买系统源码数据库文档.zip

    使用 HTML5 实现拖放交互:音效与提示功能的完整实现

    为了更好地理解 HTML5 的拖放功能,我们设计了一个简单有趣的示例:将水果从水果区拖放到购物笼中,实时更新数量和价格,并在所有水果被成功放置后,播放音效并显示提示。

    毕业设计&课设_基于 SSM 的大学生综合成绩测评系统(含信息及数据库脚本,体现系统架构及功能设计).zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

Global site tag (gtag.js) - Google Analytics