Android保存联系人到通讯录的方法

发布时间 - 2026-01-11 02:25:58    点击率:

上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录。这里我就假设你已经拿到了要保存的联系人数据。 

因为是一个工具类,所以我这里就只给一个方法了,也是很简单,但是写的没有读取联系人的数据那么多,要保存更多其实看下如何读取的就会了。

直接上源码: 

/** 
   * 添加联系人到本机 
   * 
   * @param context 
   * @param contact 
   * @return 
   */ 
  public static boolean addContact(Context context, ContactEntity contact) { 
    try { 
      ContentValues values = new ContentValues(); 
 
      // 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId 
      Uri rawContactUri = context.getContentResolver().insert( 
          RawContacts.CONTENT_URI, values); 
      long rawContactId = ContentUris.parseId(rawContactUri); 
 
      // 向data表插入姓名数据 
      String name = contact.getName(); 
      if (name != "") { 
        values.clear(); 
        values.put(Data.RAW_CONTACT_ID, rawContactId); 
        values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); 
        values.put(StructuredName.GIVEN_NAME, name); 
        context.getContentResolver().insert( 
            ContactsContract.Data.CONTENT_URI, values); 
      } 
 
      // 向data表插入电话数据 
      String mobile_number = contact.getPhone1().get(0); 
      if (mobile_number != "") { 
        values.clear(); 
        values.put(Data.RAW_CONTACT_ID, rawContactId); 
        values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); 
        values.put(Phone.NUMBER, mobile_number); 
        values.put(Phone.TYPE, Phone.TYPE_MOBILE); 
        context.getContentResolver().insert( 
            ContactsContract.Data.CONTENT_URI, values); 
      } 
 
      // 向data表插入Email数据 
      String email = contact.getEmail(); 
      if (email != "") { 
        values.clear(); 
        values.put(Data.RAW_CONTACT_ID, rawContactId); 
        values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); 
        values.put(Email.DATA, email); 
        values.put(Email.TYPE, Email.TYPE_WORK); 
        context.getContentResolver().insert( 
            ContactsContract.Data.CONTENT_URI, values); 
      } 
 
      // 向data表插入QQ数据 
      String qq = contact.getQq(); 
      if (qq != "") { 
        values.clear(); 
        values.put(Data.RAW_CONTACT_ID, rawContactId); 
        values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE); 
        values.put(Im.DATA, qq); 
        values.put(Im.PROTOCOL, Im.PROTOCOL_QQ); 
        context.getContentResolver().insert( 
            ContactsContract.Data.CONTENT_URI, values); 
      } 
 
      // 向data表插入备注信息 
      String describe = contact.getDescribe(); 
      if (describe != "") { 
        values.clear(); 
        values.put(Data.RAW_CONTACT_ID, rawContactId); 
        values.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE); 
        values.put(Note.NOTE, describe); 
        context.getContentResolver().insert( 
            ContactsContract.Data.CONTENT_URI, values); 
      } 
 
      // 向data表插入头像数据 
      Bitmap sourceBitmap = BitmapFactory.decodeResource( 
          context.getResources(), R.drawable.icon); 
      final ByteArrayOutputStream os = new ByteArrayOutputStream(); 
      // 将Bitmap压缩成PNG编码,质量为100%存储 
      sourceBitmap.compress(Bitmap.CompressFormat.PNG, 100, os); 
      byte[] avatar = os.toByteArray(); 
      values.put(Data.RAW_CONTACT_ID, rawContactId); 
      values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE); 
      values.put(Photo.PHOTO, avatar); 
      context.getContentResolver().insert( 
          ContactsContract.Data.CONTENT_URI, values); 
    } 
 
    catch (Exception e) { 
      return false; 
    } 
    return true; 
   } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # 联系人  # 通讯录  # Android ContentProvider实现手机联系人读取和插入  # Android读取手机通讯录联系人到自己项目  # android仿微信联系人索引列表功能  # android如何获取联系人所有信息  # Android使用AsyncQueryHandler实现获取手机联系人功能  # Android ContentProvider实现获取手机联系人功能  # Android 获取手机联系人实例代码详解  # android实现读取、搜索联系人的代码  # Android ContentProvider获取手机联系人实例  # Android小程序实现访问联系人  # 本机  # 是一个  # 我就  # 那么多  # 上一  # 很简单  # 你已经  # 这篇文章  # 讲了  # 人到  # 拿到了  # 自动生成  # 会了  # 大家多多  # 只给  # 压缩成  # 所以我  # Context  # addContact  # ContactEntity 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在 React 中条件性地遍历数组并渲染元素  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  5种Android数据存储方式汇总  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  canvas 画布在主流浏览器中的尺寸限制详细介绍  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel如何与Inertia.js和Vue/React构建现代单页应用  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  如何快速查询网址的建站时间与历史轨迹?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何在腾讯云免费申请建站?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何在香港服务器上快速搭建免备案网站?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Android自定义listview布局实现上拉加载下拉刷新功能  音响网站制作视频教程,隆霸音响官方网站?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  网站制作软件有哪些,制图软件有哪些?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  历史网站制作软件,华为如何找回被删除的网站?  Linux安全能力提升路径_长期防护思维说明【指导】  phpredis提高消息队列的实时性方法(推荐)  Java解压缩zip - 解压缩多个文件或文件夹实例  微信h5制作网站有哪些,免费微信H5页面制作工具?  网站建设整体流程解析,建站其实很容易!  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel安装步骤详细教程_Laravel环境搭建指南  SQL查询语句优化的实用方法总结  详解jQuery停止动画——stop()方法的使用  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何快速搭建高效服务器建站系统?  非常酷的网站设计制作软件,酷培ai教育官方网站?