Android 联系人开发- 保存联系人

最近在开发android平台的联系人部分,有点总结和大家分享一下:

参数:

String name,   联系人姓名

String homePhone,  家庭电话

String mobile,   手机

String workphone,  公司电话

String workfax,       公司传真

String emailAddr,    邮件地址

String msn,       
String skype,

String qq,

String company,      公司名称

String position,       职位

String homeAddr,   家庭地址

String companyAddr  公司地址

android在保存联系人的时候要特别注意的是 电话和手机的输入格式,以及添加IM时候要主要private属性

1) 手机格式: 1-390-123-1122, 经过验证1开头的号码都被认为按照手机格式显示

2)   电话及传真格式:010-123-11111,经过验证非1开头的号码都被认为按照电话格式显示

3) 添加IM时要加上 values.put(ContactMethods.ISPRIMARY, 0);

下面看看我写的代码吧:

ContentValues values = new ContentValues();
values.put(People.NAME, name);
values.put(Contacts.People.STARRED, 0);//很重要

Uri newPerson = Contacts.People.createPersonInMyContactsGroup(getContentResolver(), values);

Uri numberUri = null;
    if (!ifEmpty(homePhone)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
     values.put(Contacts.Phones.TYPE, People.Phones.TYPE_HOME);
     values.put(People.NUMBER, homePhone);
     getContentResolver().insert(numberUri, values);
    }

    if (!ifEmpty(mobile)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
     values.put(Contacts.Phones.TYPE, People.Phones.TYPE_MOBILE);
     values.put(People.NUMBER, mobile);
     getContentResolver().insert(numberUri, values);

    }

    if (!ifEmpty(workphone)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
     values.put(Contacts.Phones.TYPE, People.Phones.TYPE_WORK);
     values.put(People.NUMBER, workphone);
     getContentResolver().insert(numberUri, values);
    }

    if (!ifEmpty(workfax)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
     values.put(Contacts.Phones.TYPE, People.Phones.TYPE_FAX_WORK);
     values.put(People.NUMBER, workfax);
     getContentResolver().insert(numberUri, values);
    }

    if (!ifEmpty(emailAddr)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
     values.put(Contacts.ContactMethods.KIND, Contacts.KIND_EMAIL);
     values.put(Contacts.ContactMethods.DATA, emailAddr);
     values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);
     getContentResolver().insert(numberUri, values);
    }

    //add IM tools
    if (!ifEmpty(msn)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
     values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM);
     values.put(ContactMethods.TYPE, ContactMethods.TYPE_OTHER);
     values.put(Contacts.ContactMethods.DATA, msn);

     values.put(ContactMethods.AUX_DATA, ContactMethods.encodePredefinedImProtocol(ContactMethods.PROTOCOL_MSN));
     values.put(ContactMethods.ISPRIMARY, 0); //很重要,否则添加时出错
     getContentResolver().insert(numberUri, values);
    }

    if (!ifEmpty(skype)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
     values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM);
     values.put(ContactMethods.TYPE, ContactMethods.TYPE_OTHER);
     values.put(Contacts.ContactMethods.DATA, skype);

     values.put(ContactMethods.AUX_DATA, ContactMethods.encodePredefinedImProtocol(ContactMethods.PROTOCOL_SKYPE));
     values.put(ContactMethods.ISPRIMARY, 0); //很重要,否则添加时出错
     getContentResolver().insert(numberUri, values);
    }

    if (!ifEmpty(qq)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
     values.put(ContactMethods.KIND, Contacts.KIND_IM);
     values.put(ContactMethods.TYPE, ContactMethods.TYPE_OTHER);
     values.put(Contacts.ContactMethods.DATA, qq);

     values.put(ContactMethods.AUX_DATA, ContactMethods.encodePredefinedImProtocol(ContactMethods.PROTOCOL_QQ));
     values.put(ContactMethods.ISPRIMARY, 0); //很重要,否则添加时出错      

     getContentResolver().insert(numberUri, values);
    }

    // add company and title
    if (!ifEmpty(company) || !ifEmpty(position)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, Contacts.Organizations.CONTENT_DIRECTORY);
     if (!ifEmpty(company)) {
      values.put(Contacts.Organizations.COMPANY, company);
     }
     if (!ifEmpty(position)) {
      values.put(Contacts.Organizations.TITLE, position);
     }
     values.put(Contacts.Organizations.TYPE, Contacts.Organizations.TYPE_WORK);
     getContentResolver().insert(numberUri, values);
    }

    //add address
    if (!ifEmpty(homeAddr)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
     values.put(Contacts.ContactMethods.KIND, Contacts.KIND_POSTAL);
     values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);
     values.put(Contacts.ContactMethods.DATA, homeAddr);
     getContentResolver().insert(numberUri, values);
    }

    if (!ifEmpty(companyAddr)) {
     values.clear();
     numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
     values.put(Contacts.ContactMethods.KIND, Contacts.KIND_POSTAL);
     values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_WORK);
     values.put(Contacts.ContactMethods.DATA, companyAddr);
     getContentResolver().insert(numberUri, values);
    }

    -------------------------------

 private boolean ifEmpty(String input) {
  if (input == null || input.length() == 0 || "".equals(input)) {
   return true;
  } else {
   if ("".equals(input.trim())) {
    return true;
   }
   return false;
  }
 }

-------------------------------------

格式化电话号码的函数

private String formatPhoneNumber(String input) {
  if (input.startsWith("1")) {
   if (input.length() == 1) {
    return input;
   } else if (input.length() > 1 && input.length() < 5) {
    return input.substring(0, 1) + "-" + input.substring(1, input.length());
   } else if (input.length() >= 5 && input.length() < 8) {
    return input.substring(0, 1) + "-" + input.substring(1, 4) + "-" + input.substring(4, input.length());
   } else if (input.length() >= 8) {
    return input.substring(0, 1) + "-" + input.substring(1, 4) + "-" + input.substring(4, 7) + "-" + input.substring(7, input.length());
   }
  } else {
   if (input.length() <= 3) {
    return input;
   } else if (input.length() > 3 && input.length() < 7) {
    return input.substring(0, 3) + "-" + input.substring(3, input.length());
   } else if (input.length() >= 7) {
    return input.substring(0, 3) + "-" + input.substring(3, 6) + "-" + input.substring(6, input.length());
   }
  }
  return "";
 }

欢迎大家热烈讨论,看android 模拟器 contact部分的源码还有一个途径:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值