- 浏览: 88852 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
enefry:
不能修改对焦和曝光时间啊.
android 手机拍照流程 -
greenboy1:
楼主 你的方法里面若是保存IM出现问题。
Contact 联系人工具类(二) -
greenboy1:
谢谢分享 非常感谢
Contact 联系人工具类(二) -
greenboy1:
非常好 谢谢
Contact 联系人工具类(一) -
bug_shi:
import com.litsoft.domain.Conta ...
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; 在那里啊,小的刚入门请指教。
发表评论
-
android progressbar 自定义样式
2012-04-27 13:12 0<?xml version="1.0&q ... -
自定义Sync账户
2011-11-28 15:44 897看code -
自定义view图片圆角
2011-11-24 16:43 901没啥说的,看code才是王道。。 -
android 动画
2011-10-18 14:57 757人家的:http://www.htcplayer.com/th ... -
使用PopupWindows
2011-08-18 13:14 2945主要参考资料: http://www.cnblogs.com ... -
service 刷新UI
2011-08-12 21:40 822service 刷新UIservice 刷新UI,见附件 -
android 手机拍照流程
2011-04-26 10:23 10162android 拍照API流程 1. 在布局文件 ... -
Android CTS的使用
2011-01-24 17:06 3156Android CTS的使用1. 下载Android源码(用r ... -
Contact 联系人封装
2010-11-12 16:42 1084Contact 需要的字段 private Strin ... -
android 中好用的时间工具-DateUtils
2010-10-14 11:07 2420DateUtils.isToday(timeMills) ? ... -
不要忘了BroadcastReceiver 注册的用法
2010-10-14 10:52 1430BroadcastReceiver 是用来接收广播意图的服务组 ... -
Contact 联系人中的一些重要信息
2010-10-08 16:26 1168首先应该知道联系人的信息都存放在data表中,其中主要的字段 ...
相关推荐
linux基础进阶笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4493093&spm_id_from=333.999.0.0&desc=1
IMG20241115211541.jpg
GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于springboot家政预约平台源码数据库文档.zip
Ucharts添加stack和折线图line的混合图
基于springboot员工在线餐饮管理系统源码数据库文档.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
内容概要:本文档提供了多个蓝奏云下载链接及其对应解压密码,帮助用户快速获取所需文件。 适合人群:需要从蓝奏云下载文件的互联网用户。 使用场景及目标:方便地记录并分享蓝奏云上文件的下载地址和密码,提高下载效率。 阅读建议:直接查看并使用提供的链接和密码即可。若遇到失效情况,请尝试联系上传者确认更新后的链接。
基于Java web 实现的仓库管理系统源码,适用于初学者了解Java web的开发过程以及仓库管理系统的实现。
资源名称:Python-文件重命名-自定义添加文字-重命名 类型:windows—exe可执行工具 环境:Windows10或以上系统 功能: 1、点击按钮 "源原文"【浏览】表示:选择重命名的文件夹 2、点击按钮 "保存文件夹"【浏览】表示:保存的路径(为了方便可选择保存在 源文件中 ) 3、功能①:在【头部】添加自定义文字 4、功能②:在【尾部】添加自定义文字 5、功能③:输入源字符 ;输入替换字符 可以将源文件中的字符替换自定义的 6、功能④:自动加上编号_1 _2 _3 优点: 1、非常快的速度! 2、已打包—双击即用!无需安装! 3、自带GUI界面方便使用!
JDK8安装包
配合作者 一同使用 作者地址没有次下载路径 https://blog.csdn.net/weixin_52372189/article/details/127471149?fromshare=blogdetail&sharetype=blogdetail&sharerId=127471149&sharerefer=PC&sharesource=weixin_45375332&sharefrom=from_link
GEE训练教程
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于springboot交通感知与车路协同系统源码数据库文档.zip
基于springboot+vue 雅妮电影票购买系统源码数据库文档.zip
为了更好地理解 HTML5 的拖放功能,我们设计了一个简单有趣的示例:将水果从水果区拖放到购物笼中,实时更新数量和价格,并在所有水果被成功放置后,播放音效并显示提示。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。