全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android编程实现通讯录中联系人的读取,查询,添加功能示例

本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能。分享给大家供大家参考,具体如下:

先加二个读和写权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

具体代码:

package com.eboy.test;
import java.util.ArrayList;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.test.AndroidTestCase;
import android.util.Log;
public class ContectTest extends AndroidTestCase {
  private static final String TAG = "TestContact";
  //查询所有联系人的姓名,电话,邮箱
  public void TestContact() throws Exception {
    Uri uri = Uri.parse("content://com.android.contacts/contacts");
    ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, null);
    while (cursor.moveToNext()) {
      int contractID = cursor.getInt(0);
      StringBuilder sb = new StringBuilder("contractID=");
      sb.append(contractID);
      uri = Uri.parse("content://com.android.contacts/contacts/" + contractID + "/data");
      Cursor cursor1 = resolver.query(uri, new String[]{"mimetype", "data1", "data2"}, null, null, null);
      while (cursor1.moveToNext()) {
        String data1 = cursor1.getString(cursor1.getColumnIndex("data1"));
        String mimeType = cursor1.getString(cursor1.getColumnIndex("mimetype"));
        if ("vnd.android.cursor.item/name".equals(mimeType)) { //是姓名
          sb.append(",name=" + data1);
        } else if ("vnd.android.cursor.item/email_v2".equals(mimeType)) { //邮箱
          sb.append(",email=" + data1);
        } else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)) { //手机
          sb.append(",phone=" + data1);
        }
      }
      cursor1.close();
      Log.i(TAG, sb.toString());
    }
    cursor.close();
  }
  //查询指定电话的联系人姓名,邮箱
  public void testContactNameByNumber() throws Exception {
    String number = "18052369652";
    Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + number);
    ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = resolver.query(uri, new String[]{"display_name"}, null, null, null);
    if (cursor.moveToFirst()) {
      String name = cursor.getString(0);
      Log.i(TAG, name);
    }
    cursor.close();
  }
  //添加联系人,使用事务
  public void testAddContact() throws Exception {
    Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    ContentResolver resolver = getContext().getContentResolver();
    ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
    ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri)
      .withValue("account_name", null)
      .build();
    operations.add(op1);
    uri = Uri.parse("content://com.android.contacts/data");
    ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri)
      .withValueBackReference("raw_contact_id", 0)
      .withValue("mimetype", "vnd.android.cursor.item/name")
      .withValue("data2", "龚小永")
      .build();
    operations.add(op2);
    ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri)
      .withValueBackReference("raw_contact_id", 0)
      .withValue("mimetype", "vnd.android.cursor.item/phone_v2")
      .withValue("data1", "13539777967")
      .withValue("data2", "2")
      .build();
    operations.add(op3);
    ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri)
    .withValueBackReference("raw_contact_id", 0)
    .withValue("mimetype", "vnd.android.cursor.item/email_v2")
    .withValue("data1", "asdfasfad@163.com")
    .withValue("data2", "2")
    .build();
  operations.add(op4);
    resolver.applyBatch("com.android.contacts", operations);
  }
}

完整实例代码点击此处本站下载

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # 通讯录  # 联系人  # 读取  # 查询  # 添加  # Android保存联系人到通讯录的方法  # android如何获取联系人所有信息  # Android ContentProvider实现获取手机联系人功能  # Android仿微信联系人列表字母侧滑控件  # Android实现获取联系人电话号码功能  # android利用ContentResolver访问者获取手机联系人信息  # Android跳转到系统联系人及拨号或短信界面  # Android获取手机联系人的方法  # 进阶  # 相关内容  # 感兴趣  # 给大家  # 点击此处  # 二个  # 更多关于  # 解决方法  # 所述  # 程序设计  # 讲述了  # String  # final  # static  # void  # TestContact  # TAG  # private  # Log  # AndroidTestCase 


相关文章: 宝塔新建站点报错如何解决?  建站之星后台管理:高效配置与模板优化提升用户体验  潮流网站制作头像软件下载,适合母子的网名有哪些?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  黑客入侵网站服务器的常见手法有哪些?  建站之星安装步骤有哪些常见问题?  建站之星导航菜单设置与功能模块配置全攻略  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  制作宣传网站的软件,小红书可以宣传网站吗?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  太平洋网站制作公司,网络用语太平洋是什么意思?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  如何基于PHP生成高效IDC网络公司建站源码?  如何彻底删除建站之星生成的Banner?  建站主机选购指南:核心配置与性价比推荐解析  建站之星3.0如何解决常见操作问题?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  已有域名如何快速搭建专属网站?  制作网站的基本流程,设计网站的软件是什么?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  Swift中switch语句区间和元组模式匹配  Swift中循环语句中的转移语句 break 和 continue  浅析上传头像示例及其注意事项  南京网站制作费用,南京远驱官方网站?  手机网站制作与建设方案,手机网站如何建设?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  建站之星导航配置指南:自助建站与SEO优化全解析  如何高效生成建站之星成品网站源码?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何快速登录WAP自助建站平台?  c++ stringstream用法详解_c++字符串与数字转换利器  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  智能起名网站制作软件有哪些,制作logo的软件?  如何选择高效稳定的ISP建站解决方案?  济南企业网站制作公司,济南社保单位网上缴费步骤?  建站之星如何快速更换网站模板?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星安装失败:服务器环境不兼容?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  ,如何利用word制作宣传手册?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  jQuery 常见小例汇总  如何制作网站标识牌,动态网站如何制作(教程)? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。