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


相关推荐: 如何构建满足综合性能需求的优质建站方案?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  历史网站制作软件,华为如何找回被删除的网站?  如何在VPS电脑上快速搭建网站?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  如何解决hover在ie6中的兼容性问题  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel Fortify是什么,和Jetstream有什么关系  成都网站制作公司哪家好,四川省职工服务网是做什么用?  iOS正则表达式验证手机号、邮箱、身份证号等  详解Android——蓝牙技术 带你实现终端间数据传输  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel中的withCount方法怎么高效统计关联模型数量  制作企业网站建设方案,怎样建设一个公司网站?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  LinuxShell函数封装方法_脚本复用设计思路【教程】  如何用狗爹虚拟主机快速搭建网站?  如何在万网ECS上快速搭建专属网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何选择PHP开源工具快速搭建网站?  php 三元运算符实例详细介绍  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Swift中swift中的switch 语句  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  node.js报错:Cannot find module 'ejs'的解决办法  如何基于云服务器快速搭建网站及云盘系统?  如何用腾讯建站主机快速创建免费网站?  微信小程序 wx.uploadFile无法上传解决办法  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Android 常见的图片加载框架详细介绍  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  教你用AI将一段旋律扩展成一首完整的曲子  phpredis提高消息队列的实时性方法(推荐)  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel如何实现事件和监听器?(Event & Listener实战)  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  太平洋网站制作公司,网络用语太平洋是什么意思?  SQL查询语句优化的实用方法总结