Android保存联系人

 

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

 

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

 

/** * 添加联系人到本机 *  * @param context * @param contact * @return */public static boolean addContact(Context context, ContactEntity contact) {try {ContentValues values = new ContentValues();// 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactIdUri 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;  }

 

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android(安卓)使用Intent传递数据的实现思路与代码
  5. Android通讯录管理(获取联系人、通话记录、短信消息)(三)
  6. 浅析Android(安卓)MediaProvider之二
  7. 谈Android中对ListView,RecycleView应用的简化
  8. [置顶] android 如何在自定义对话框中获取edittext中的数据
  9. Android(安卓)开发中的架构模式 -- MVC / MVP / MVVM

随机推荐

  1. Android(安卓): 等待view加载完成后执行
  2. Android开发艺术探索
  3. Android自定义控件中的自定义attrs
  4. [文件] Python读取txt存储至xls
  5. Android(安卓)设计模式 笔记 - 深入了解
  6. android添加library遇到的问题
  7. android viewmodel 数据刷新异常
  8. 秒懂Android(安卓)Studio的奇技淫巧
  9. android20个实用快捷键
  10. android动态控制组件的位置、大小和新的