- 浏览: 89143 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 905看code -
自定义view图片圆角
2011-11-24 16:43 906没啥说的,看code才是王道。。 -
android 动画
2011-10-18 14:57 765人家的:http://www.htcplayer.com/th ... -
使用PopupWindows
2011-08-18 13:14 2948主要参考资料: http://www.cnblogs.com ... -
service 刷新UI
2011-08-12 21:40 825service 刷新UIservice 刷新UI,见附件 -
android 手机拍照流程
2011-04-26 10:23 10169android 拍照API流程 1. 在布局文件 ... -
Android CTS的使用
2011-01-24 17:06 3160Android CTS的使用1. 下载Android源码(用r ... -
Contact 联系人封装
2010-11-12 16:42 1087Contact 需要的字段 private Strin ... -
android 中好用的时间工具-DateUtils
2010-10-14 11:07 2426DateUtils.isToday(timeMills) ? ... -
不要忘了BroadcastReceiver 注册的用法
2010-10-14 10:52 1436BroadcastReceiver 是用来接收广播意图的服务组 ... -
Contact 联系人中的一些重要信息
2010-10-08 16:26 1178首先应该知道联系人的信息都存放在data表中,其中主要的字段 ...
相关推荐
综上所述,"联系人导出 ContactList" 是一款全面的联系人管理工具,它不仅为普通用户提供便捷的导出服务,还为开发者提供了丰富的 API 和文档,以促进其在各类应用中的集成和扩展。通过良好的设计和功能实现,...
2. 用户界面(UI)设计:ContactManager的用户界面应简洁易用,包括添加、删除、编辑联系人,以及搜索和分类等功能。UI设计需遵循人机交互原则,提供良好的用户体验。 3. 响应式设计:为了适应不同设备和屏幕尺寸,...
本项目名为"基于java的联系人导出 ContactList.zip",显然它是一个使用Java实现的用于导出联系人信息的程序。从提供的压缩包文件列表来看,我们可以深入探讨以下几个关键知识点: 1. **Java编程**:作为标签,Java...
另一种可能性是,该项目是一个命令行工具,用户通过输入特定的命令来导出联系人。Java的System类和Runtime类可以用来执行这些命令。 6. **日志记录**: 在开发过程中,日志记录是必不可少的。Java的log4j或java....
【标题】"java源码:联系人导出 ContactList.zip" 涉及到的核心知识点主要集中在Java编程语言以及文件处理领域。这个项目可能是一个用于管理个人或企业联系人的应用程序,能够导出联系人信息,方便备份或共享。以下...
这个压缩包"基于Java的实例源码-联系人导出 ContactList.zip"是关于使用Java编程语言实现的一个联系人管理系统的源代码示例。这个系统可能包含了一个功能,即能够导入和导出联系人列表,方便用户管理和共享他们的...
在Windows Mobile 5.0操作系统中,管理联系人(Contact)是智能手机用户常见的任务之一。然而,当联系人数量庞大时,单个删除可能会变得非常耗时。批量删除功能可以帮助用户快速清理不再需要的联系人记录,从而节省...
在"Contact Provider"的案例中,我们可能创建了一个自定义的联系人管理器,模仿系统内置的联系人应用,允许用户添加、查询、修改或删除联系人信息。 创建ContentProvider需要继承`android.content.ContentProvider`...
7. **面向对象编程**:通过类的设计,可能有Contact类代表一个联系人,ContactManager类管理一组联系人,体现类的封装、继承和多态特性。 8. **异常处理**:在处理用户输入或文件操作时,可能会遇到错误,因此程序...
在实际开发中,通常会封装成易于使用的工具类或服务,以便在应用中方便地进行联系人群组的操作。`Demotest`可能是这样一个示例项目,它可能包含了实现这些操作的代码示例和测试用例。 总的来说,理解并熟练运用上述...
在iOS开发中,添加联系人是一项常见的功能,尤其对于企业应用或者个人管理工具来说非常实用。这个名为"ios-联系人添加.zip"的压缩包很可能包含了一个示例项目,教你如何在iOS应用中实现添加联系人的功能。我们将围绕...
我们可以定义一个`PhoneBook`类,包含一个`Contact`对象的集合,并提供添加新联系人(`addContact`)和删除联系人(`removeContact`)的方法。 为了实现添加联系人功能,`addContact`方法会接收一个`Contact`对象或其...
在Android平台上,联系人API是开发者与用户手机通讯录进行交互的重要工具。通过这个API,开发者可以实现诸如读取联系人信息、添加新联系人、更新现有联系人、删除联系人以及管理联系人分组等一系列功能。在"Pro ...
一个优秀的联系人管理系统能够帮助我们高效地存储、检索和更新联系人资料,提高工作效率。本项目“联系人管理系统”正是这样一个应用,它巧妙地集成了Hibernate和Spring框架,为开发者提供了一个学习J2EE架构的实用...
在Android操作系统中,"添加联系人号码"是一个常见的功能,涉及到用户界面交互、意图(Intent)以及联系人操作等核心知识点。下面将详细讲解这些概念及其应用。 首先,当我们提到"通过点击图片按钮",这是在谈论...
可以使用像`ShadowContactsContract`这样的Shadow类(来自Mockito库)来模拟联系人数据的读写操作。同时,测试时应确保遵循Android测试的最佳实践,如使用`@RunWith(AndroidJUnit4.class)`注解,以及在合适的生命...
在IT行业中,开发一个“ContactList:显示联系人列表的应用”通常涉及到许多核心技术和实践,尤其是在使用Java语言的情况下。以下是一些关键知识点的详细说明: 1. **Java基础**:作为标签,Java是该应用的基础编程...
可能使用了JavaBeans或者实体类来封装联系人的信息,同时结合Hibernate框架与数据库进行交互,完成数据的CRUD操作。 2. **视图(View)**:视图通常由JSP或FreeMarker等模板技术实现,用于展示用户界面。在通信录...
在Android和iOS等移动操作系统中,查看和获取联系人电话是一项常见的功能,广泛应用于社交应用、通讯工具和其他需要用户授权访问联系人信息的软件中。本文将深入探讨如何在这些平台上实现这一功能。 首先,我们从...
本资源"Android_contact.rar"提供了一个基础的Android通讯录实现,涵盖了添加联系人、发送短信以及拨打电话等功能。接下来,我们将深入探讨这些核心知识点。 1. **AndroidManifest.xml配置**: 在Android应用中,`...