`
zhonglunshun
  • 浏览: 134821 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android保存联系人到通讯录

阅读更多

Android保存联系人

 

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

 

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

 

/**
	 * 添加联系人到本机
	 * 
	 * @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保存联系人到通讯录的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    android多个联系人保存到通讯录

    显示联系人的listView列表,并且点击号码可以拨打电话,点击按钮“导入通讯录”,选择全部联系人导入通讯录。

    Android开发实验---通讯录.docx

    以下功能和软件界面供参考:仿照一般手机通讯录的使用界面和功能,主要功能可包括: (1)可以添加、删减联系人 (2)联系人的信息包括:姓名、手机号码、工作单位、群组、电子邮件、手机铃声 (3)选择联系人后,...

    android通讯录源码

    此程序可以读取手机自带通讯录上的所有联系人,并且可以导入到这个通讯录列表,不用用户一个一个地输入,将导入的联系人信息保存在SQLite3数据库中,还具有向指定联系人发送短信、打电话、增加、修改联系人等基本...

    Android通讯录

    仿android通讯录。可以对联系人进行增、删、改、查,联系人头像的更换,通讯录的保存,导出,导入功能。

    基于Android 的通讯录设计

    基于Android studio设计的通讯录项目,利用Sqlite数据库技术实现对联系人姓名、电话号码、头像和备注进行保存(增删查改),可实现对指定联系人拨打电话和发送短信等操作。

    Android通讯录程序+源代码工程+国际化处理

    本程序是一个Android的通讯录程序,联系人姓名和手机号码是通过SQLite数据库保存,通过自定义适配器显示在界面,有增删查改功能。

    通讯录实现添加,删除,查找联系人,密码锁功能.doc

    通讯录实现添加,删除,查找,修改联系人,密码锁功能,可选择性保存联系人姓名,电话,性别,学号,地址等

    Android 通讯录 Android contact源代码

    摘要:Java源码,Android源码,通讯录 Android contact通讯录实例,比较不错的例子,来自书中的完整实例,Android手机读取联系人信息、显示、保存、编辑联系人,多卡同时读取联系人等,涉及要点:删除指定数据列、URI...

    android手机通讯录备份还原代码

    1.把通讯录中的联系人,电话号码保存到txt文件中完成备份。 2.读取txt文件,导入到通讯录完成还原。 具体代码 1.添加 通讯录读写权限,存储卡写权限 <uses-permission android:name="android.permission.READ_...

    android读取联系人信息,姓名,电话,头像

    通过contentprovider提供的uri查询手机电话簿的联系人信息,包括姓名,电话,头像(获取的是本机保存的联系人信息,没有获取SIM卡里面联系人的信息)

    自定义通讯录

    自定义通讯录,用到android开发布局,gallery运用,listView,及SQLite的存储联系人姓名,进行对联系人的增删改查操作,并将结果保存在数据库中

    Android利用Intent读取和更新通讯录

    一、简介 本节演示如何在安卓系统中通过用户配置文件(user profile)读取和更新该手机的所有联系人信息,...在Android 4中,这个保存联系人信息的应用程序称为“People app”,而在Android 5.0及更高版本中,这个应

    安卓企业通讯录查询软件(Corporate Addressbook)

    Corporate Addressbook GAL是指the Global Address List 意为全球联系人清单 是存在公司Exchange服务器上的联系人信息 你可以利用这款软件在Android安卓手机上查找别人的联系方式 或者将其保存到自己的本地通讯录中 ...

    Excel 联系人 v2.7.6.1

    2. Excel联系人将你手机中所有联系人信息连同照片打包到一个ZIP文件中,并通过Email、SD卡、Google Drive、Box或Dropbox等方式导出到你的电脑中。 3. 不需要将你的通讯录放到Google或其它服务器上,只需一个zip文件就...

    个人通讯录,完成添加、删除、修改、查询等功能

    (3)开发布局文件activity_main.xml用于显示联系人列表。 (4)layout目录下新建一个activity_person_message.xml,用于显示联系人详细信息 (5)开发数据库辅助类ContactOpenHelper类,新建一个ContactOpenHelper....

    新版Android开发教程.rar

    Android 进一步推进了 " 随时随地为每个人提供信息 " 这一企 业 目标的实现。 � Open Handset Alliance 汇集了多家业界巨头。运营商如: China Mobile 、 NTT DoCoMo 、 Vodafone 、 T-M obile 等;设备制造商如 ...

    安卓手机联系人号码消除空格

    经常把联系人保存为csv后,再导入其他手机,要么出现空格,要么出线短横线,用这个可以一键消除,还可以统一去掉+86等

    联系人管理系统(兼具纪念日提醒)(已更新)

    (该版本已知BUG:从VCF导入的联系人不能保存。升级版已解决该问题)  运行要求: 本软件采用C#编写,需要.NET Framework 3.5支持。 Windows 7可直接使用,Vista 或者Windows XP 需要升级至.NET Framework 3.5或者...

Global site tag (gtag.js) - Google Analytics