`
l540151663
  • 浏览: 185404 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

android通讯录数据库操作(转载)

阅读更多
// 根据ID获得联系人信息实体
  private static EnContactBackUp getEnContactBackUp(String id) {
   ContentResolver resolver = acApplication.getInstance()
     .getContentResolver();
   EnContactBackUp contact = new EnContactBackUp();
   contact.setId(id);
   String value = null;
   // 获得昵称
   Cursor cur = resolver.query(ContactsContract.Data.CONTENT_URI,
     new String[] { Nickname.NAME },
     ContactsContract.Data.CONTACT_ID + "=? and "
       + ContactsContract.Data.MIMETYPE + "=?", new String[] {
       id, Nickname.CONTENT_ITEM_TYPE }, null);
   while (cur.moveToNext()) {
    contact.setNickName(cur.getString(0).replaceAll("#", "#")
      .replaceAll(",", ",").replaceAll(";", ";")
      .replaceAll(":", ":"));
   }
   cur.close();
   // 获得名字序列串
   Cursor nameCur = resolver.query(ContactsContract.Data.CONTENT_URI,
     new String[] { ContactsContract.Data.DATA4,
       ContactsContract.Data.DATA3,
       ContactsContract.Data.DATA2,
       ContactsContract.Data.DATA5,
       ContactsContract.Data.DATA6 },
     ContactsContract.Data.CONTACT_ID + "=? and "
       + ContactsContract.Data.MIMETYPE + "=?", new String[] {
       id, StructuredName.CONTENT_ITEM_TYPE }, null);
   while (nameCur.moveToNext()) {
    value = nameCur.getString(0);
    contact.setPrefix(value != null ? value.replaceAll("#", "#")
      .replaceAll(",", ",").replaceAll(";", ";")
      .replaceAll(":", ":").replace(" ", " ") : value);
    value = nameCur.getString(1);
    contact.setFamilyName(value != null ? value.replaceAll("#", "#")
      .replaceAll(",", ",").replaceAll(";", ";")
      .replaceAll(":", ":").replace(" ", " ") : value);
    value = nameCur.getString(2);
    contact.setGivenName(value != null ? value.replaceAll("#", "#")
      .replaceAll(",", ",").replaceAll(";", ";")
      .replaceAll(":", ":").replace(" ", " ") : value);
    value = nameCur.getString(3);
    contact.setCenterName(value != null ? value.replaceAll("#", "#")
      .replaceAll(",", ",").replaceAll(";", ";")
      .replaceAll(":", ":").replace(" ", " ") : value);
    value = nameCur.getString(4);
    contact.setSuffix(value != null ? value.replaceAll("#", "#")
      .replaceAll(",", ",").replaceAll(";", ";")
      .replaceAll(":", ":").replace(" ", " ") : value);
   }
   nameCur.close();
   // 根据ID查询通讯录号码
   Cursor phoneCursor = resolver.query(
     ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
     new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,
       ContactsContract.CommonDataKinds.Phone.TYPE },
     ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?",
     new String[] { id }, null);
   System.out.println("phone count    " + phoneCursor.getCount());
   while (phoneCursor.moveToNext()) {
    int type = phoneCursor.getInt(1);
    value = phoneCursor.getString(0);
    switch (type) {
    case Phone.TYPE_HOME:
     contact.setHomeTel(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    case Phone.TYPE_MOBILE:
     contact.setUsePhone(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    case Phone.TYPE_WORK:
     contact.setOfficeTel(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    case Phone.TYPE_FAX_HOME:
     contact.setHomeFax(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    case Phone.TYPE_FAX_WORK:
     contact.setOfficeFax(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    }
   }
   phoneCursor.close(); // 关闭游标
   // 获得QQ号
   Cursor imCur = resolver.query(ContactsContract.Data.CONTENT_URI,
     new String[] { Im.DATA, Im.PROTOCOL },
     ContactsContract.Data.CONTACT_ID + "=? and "
       + ContactsContract.Data.MIMETYPE + "=?", new String[] {
       id, Im.CONTENT_ITEM_TYPE }, null);
   while (imCur.moveToNext()) {
    int type = imCur.getInt(1);
    value = imCur.getString(0);
    switch (type) {
    case Im.PROTOCOL_QQ: // 匹配为QQ
     contact.setQQNum(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    }
   }
   imCur.close();
   // 获得职位和公司
   Cursor orgCur = resolver.query(ContactsContract.Data.CONTENT_URI,
     new String[] { Organization.COMPANY, Organization.TITLE,
       Organization.TYPE }, ContactsContract.Data.CONTACT_ID
       + "=? and " + ContactsContract.Data.MIMETYPE + "=?",
     new String[] { id, Organization.CONTENT_ITEM_TYPE }, null);
   while (orgCur.moveToNext()) {
    int type = orgCur.getInt(2);
    switch (type) {
    case Organization.TYPE_WORK:
     value = orgCur.getString(0);
     contact.setCompany(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     value = orgCur.getString(1);
     contact.setPisition(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    }
   }
   orgCur.close();
   // 获得备注
   Cursor noteCur = resolver.query(ContactsContract.Data.CONTENT_URI,
     new String[] { Note.NOTE }, ContactsContract.Data.CONTACT_ID
       + "=? and " + ContactsContract.Data.MIMETYPE + "=?",
     new String[] { id, Note.CONTENT_ITEM_TYPE }, null);
   while (noteCur.moveToNext()) {
    value = noteCur.getString(0);
    contact.setNote(value != null ? value.replaceAll("#", "#")
      .replaceAll(",", ",").replaceAll(";", ";")
      .replaceAll(":", ":").replace(" ", " ") : value);
   }
   noteCur.close();
   // 获得邮箱信息
   Cursor emailCur = resolver.query(
     ContactsContract.CommonDataKinds.Email.CONTENT_URI,
     new String[] { Email.DATA1, Email.TYPE },
     ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=? and "
       + ContactsContract.CommonDataKinds.Email.MIMETYPE
       + "=?", new String[] { id, Email.CONTENT_ITEM_TYPE },
     null);
   while (emailCur.moveToNext()) {
    int type = emailCur.getInt(1);
    value = emailCur.getString(0);
    switch (type) {
    case Email.TYPE_HOME:
     contact.setHomeMailBox(value != null ? value
       .replaceAll("#", "#").replaceAll(",", ",")
       .replaceAll(";", ";").replaceAll(":", ":")
       .replace(" ", " ") : value);
     break;
    case Email.TYPE_WORK:
     contact.setOfficeMailBox(value != null ? value
       .replaceAll("#", "#").replaceAll(",", ",")
       .replaceAll(";", ";").replaceAll(":", ":")
       .replace(" ", " ") : value);
     break;
    case Email.TYPE_OTHER:
     contact.setElecMailBox(value != null ? value
       .replaceAll("#", "#").replaceAll(",", ",")
       .replaceAll(";", ";").replaceAll(":", ":")
       .replace(" ", " ") : value);
     break;
    }
   }
   emailCur.close();
   // 获得网址
   Cursor webCur = resolver.query(ContactsContract.Data.CONTENT_URI,
     new String[] { Website.URL, Website.TYPE },
     ContactsContract.CommonDataKinds.Website.CONTACT_ID + "=? and "
       + ContactsContract.CommonDataKinds.Website.MIMETYPE
       + "=?", new String[] { id, Website.CONTENT_ITEM_TYPE },
     null);
   while (webCur.moveToNext()) {
    int type = webCur.getInt(1);
    switch (type) {
    case Website.TYPE_OTHER:
     value = webCur.getString(0);
     contact.setPersonWeb(value != null ? value.replaceAll("#", "#")
       .replaceAll(",", ",").replaceAll(";", ";")
       .replaceAll(":", ":").replace(" ", " ") : value);
     break;
    }
   }
   webCur.close();
   return contact;
  }







// 通讯录还原 添加联系人
  public static long updateContact(EnContactBackUp contact) {
   // 获得查询分析器
   ContentValues values = new ContentValues();
   ContentResolver res = acApplication.getInstance().getContentResolver();
   String value = null;
   // 插入通讯录
   Uri rawContactUri = res.insert(
     ContactsContract.RawContacts.CONTENT_URI, values);
   long rawContactId = ContentUris.parseId(rawContactUri);
   values.clear();
   value = contact.getNickName();
   if (value != null && !value.equals("") && !value.equals(" ")) {
    // 设置昵称
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(Nickname.NAME, value);
    values.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }

  // 设置名字信息
   values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
   values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
   value = contact.getPrefix();
   if (value != null && !value.equals("") && !value.equals(" ")) {
    values.put(StructuredName.PREFIX, value);
   }
   value = contact.getFamilyName();
   if (value != null && !value.equals("") && !value.equals(" ")) {
    values.put(StructuredName.FAMILY_NAME, value);
   }
   value = contact.getGivenName();
   if (value != null && !value.equals("") && !value.equals(" ")) {
    values.put(StructuredName.GIVEN_NAME, value);
   }
   value = contact.getCenterName();
   if (value != null && !value.equals("") && !value.equals(" ")) {
    values.put(StructuredName.MIDDLE_NAME, value);
   }
   value = contact.getSuffix();
   if (value != null && !value.equals("") && !value.equals(" ")) {
    values.put(StructuredName.SUFFIX, value);
   }
   res.insert(ContactsContract.Data.CONTENT_URI, values);
   values.clear();

  // 添加手机号码
   value = contact.getUsePhone();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, value);
    values.put(ContactsContract.CommonDataKinds.Phone.TYPE,
      Phone.TYPE_MOBILE);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }

  // 添加家庭号码
   value = contact.getHomeTel();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, value);
    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(ContactsContract.CommonDataKinds.Phone.TYPE,
      Phone.TYPE_HOME);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加单位号码
   value = contact.getOfficeTel();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, value);
    values.put(ContactsContract.CommonDataKinds.Phone.TYPE,
      Phone.TYPE_WORK);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加家庭传真
   value = contact.getHomeFax();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, value);
    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(ContactsContract.CommonDataKinds.Phone.TYPE,
      Phone.TYPE_FAX_HOME);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加办公传真
   value = contact.getOfficeFax();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, value);
    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(ContactsContract.CommonDataKinds.Phone.TYPE,
      Phone.TYPE_FAX_WORK);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }

  // 添加QQ号码
   value = contact.getQQNum();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(ContactsContract.Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
    values.put(Im.DATA, value);
    values.put(Im.PROTOCOL, Im.PROTOCOL_QQ);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加公司和职位
   if ((contact.getCompany() != null && !contact.getCompany().equals(""))
     || (contact.getPisition() != null && !contact.getPisition()
       .equals(""))) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(ContactsContract.Data.MIMETYPE,
      Organization.CONTENT_ITEM_TYPE);
    if (contact.getCompany() != null
      && !contact.getCompany().equals("")) {
     values.put(Organization.COMPANY, contact.getCompany());
    }
    if (contact.getPisition() != null
      || !contact.getPisition().equals("")) {
     values.put(Organization.TITLE, contact.getPisition());
    }
    values.put(Organization.TYPE, Organization.TYPE_WORK);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加备注
   value = contact.getNote();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
    values.put(ContactsContract.Data.MIMETYPE, Note.CONTENT_ITEM_TYPE);
    values.put(Note.NOTE, value);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加电子邮箱
   value = contact.getElecMailBox();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.CommonDataKinds.Email.RAW_CONTACT_ID,
      rawContactId);
    values.put(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
    values.put(Email.DATA1, value);
    values.put(Email.TYPE, Email.TYPE_OTHER);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加家庭邮箱
   value = contact.getHomeMailBox();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.CommonDataKinds.Email.RAW_CONTACT_ID,
      rawContactId);
    values.put(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
    values.put(Email.DATA1, value);
    values.put(Email.TYPE, Email.TYPE_HOME);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加单位邮箱
   value = contact.getOfficeMailBox();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.CommonDataKinds.Email.RAW_CONTACT_ID,
      rawContactId);
    values.put(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
    values.put(Email.DATA1, value);
    values.put(Email.TYPE, Email.TYPE_WORK);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   // 添加网站
   value = contact.getPersonWeb();
   if (value != null && !value.equals("")) {
    values.put(ContactsContract.CommonDataKinds.Website.RAW_CONTACT_ID,
      rawContactId);
    values.put(ContactsContract.Data.MIMETYPE,
      Website.CONTENT_ITEM_TYPE);
    values.put(Website.URL, value);
    values.put(Website.TYPE, Website.TYPE_OTHER);
    res.insert(ContactsContract.Data.CONTENT_URI, values);
    values.clear();
   }
   return rawContactId;
  }
分享到:
评论

相关推荐

    C# 通讯录 数据库 源码

    【标题】"C# 通讯录 数据库 源码" 涉及到的核心知识点主要集中在C#编程语言的应用以及数据库的管理上。C#是Microsoft开发的一种面向对象的编程语言,它在Windows平台上广泛用于开发桌面应用、游戏、移动应用等。在这...

    Android 绿豆通讯录【SQLite数据库】

     Android 绿豆通讯录( SQLite数据库 + ListView数据展示控件 ) https://blog.csdn.net/weixin_44949135/article/details/106029404 采用 SQLite数据库 + ListView数据展示控件,可将用户添加的所有信息,分条...

    基于C#的windows CE 通讯录数据库应用实例

    ### 基于C#的Windows CE通讯录数据库应用实例 #### 实验目的 本实验旨在通过实际操作加深学生对ADO.NET数据库编程方法的理解,并掌握其中的关键对象如Connection、Command、DataReader、DataSet、DataAdapter以及...

    Android仿通讯录ListView小例子

    1.实现根据字母进行分类。...4.实现快捷操作框及其的动画显示/隐藏,上箭头与下箭头的选择性显示及位置匹配。 5.顺便做了个自定义Dialog和完整的发送邮件的实现(主送、抄送、密送、附件、标题、正文)。

    c#编写的个人通讯录以及数据库连接方法应用

    总结起来,创建一个C#编写的个人通讯录应用程序涉及了用户界面设计、数据库连接、数据操作等多个方面,需要掌握C#编程基础、数据库管理以及良好的软件工程实践。通过以上步骤,我们可以构建出一个功能完备、用户体验...

    通讯录 数据库课程设计

    ### 通讯录数据库课程设计知识点解析 #### 一、课题背景及目的 **课题背景**: 随着信息技术的快速发展,通讯录已经成为人们日常生活中不可或缺的一部分。无论是个人还是企业,都需要有效地管理和利用通讯录信息。...

    简易通讯录数据库(2)

    【简易通讯录数据库(2)】是一个用于存储和管理个人联系信息的系统,它通过数据库技术实现,便于数据的组织和检索。这个项目的核心在于它的简单性和可学习性,适合初学者了解数据库基础和编程实践。 数据库是信息...

    Android通讯录附搜索及字母索引Demo

    - Android系统使用SQLite作为内置的轻量级数据库,用于存储应用数据,如通讯录中的联系人信息。开发者需要了解如何创建数据库、表结构以及执行CRUD(创建、读取、更新、删除)操作。 2. **ContentProvider**: - ...

    tongxunlu.rar_tongxunlu_数据库 通讯录_通讯录_通讯录 数据库

    这个文件可能是相关文档或说明,可能包含了关于如何操作和还原通讯录数据库的详细步骤。阅读并理解这些文档是成功管理和维护通讯录数据库的关键。 此外,还有一个名为“通迅录”的文件,这可能是一个数据库文件本身...

    通讯录数据库设计

    ### 通讯录数据库设计详解 在现代信息化社会中,通讯录数据库设计对于个人与企业而言至关重要,它不仅有助于高效管理联系人信息,还能确保信息的安全与完整性。本文将基于提供的内容,深入解析通讯录数据库的设计...

    Android通讯录的开发-完整代码

    2. **SQLite数据库**:Android内置了SQLite数据库,用于存储通讯录数据。每个联系人信息(姓名、电话号码、电子邮件等)会被保存在特定的数据库表中。开发者需要定义数据库模型,创建表,以及实现增删改查(CRUD)...

    C#应用access作为数据库的通讯录数据库的各种功能

    在本文中,我们将深入探讨如何使用C#编程语言与Access数据库进行交互,以实现一个功能丰富的通讯录系统。Access数据库是一种流行的轻量级数据库管理系统,适用于小型到中型的应用场景,尤其是在桌面应用中。C#作为...

    Android通讯录源代码

    【Android通讯录源代码】是Android平台上实现联系人管理功能的一种源码实现,它涉及到Android系统的核心组件和服务,包括数据库操作、UI设计、数据存储和检索等关键知识点。在这个源码中,我们可以深入理解Android...

    android通讯录

    本资源是一个 Android 通讯录小软件的开发实践,包括了 Android 通讯录的开发、 SQLite 数据库的使用、联系人信息的存储和管理等方面的知识点。 一、Android 通讯录的开发 Android 通讯录小软件可以读取手机自带...

    Android通讯录的源代码

    【Android通讯录源代码解析】 在移动设备上,通讯录是一个至关重要的功能,它帮助用户存储、管理和查找联系人的信息。本项目是基于Java语言开发的Android通讯录应用,提供了全面的通讯录功能,旨在帮助开发者理解...

    android 实现仿微信通讯录

    android 实现仿微信通讯录android 实现仿微信通讯录android 实现仿微信通讯录android 实现仿微信通讯录android 实现仿微信通讯录android 实现仿微信通讯录android 实现仿微信通讯录android 实现仿微信通讯录android ...

    android通讯录(完整,可运行)

    《Android通讯录系统详解——基于adt-bundle-windows的实现》 在移动设备上,通讯录是用户日常使用的重要功能之一。Android系统以其开放性和灵活性,为开发者提供了丰富的API,使得开发自定义通讯录应用成为可能。...

    android操作数据库Sqlite源代码

    以上是基于Android操作SQLite数据库的一些核心概念和源代码组织方式。实际开发中,还需要考虑数据同步、数据备份、数据加密等高级功能,以及性能优化,如批量插入、使用索引等。学习并理解这些知识点,将有助于你更...

    Android通讯录.zip

    本篇将详细探讨基于Android的通讯录项目,主要涉及的技术点包括SQLite数据库的使用、Android的Content Provider以及Intent通信机制。 首先,SQLite作为Android内置的轻量级数据库,是存储通讯录数据的主要工具。...

Global site tag (gtag.js) - Google Analytics