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