操作Android 手機通訊錄資料庫

來源:互聯網
上載者:User

 // 根據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;
 }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.