`
zhonglunshun
  • 浏览: 139524 次
  • 性别: 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保存联系人到通讯录的方法是Android开发中的一种常见操作,这篇文章将详细介绍如何将联系人数据保存到本机通讯录中。 首先,我们需要了解Android通讯录的结构。 Android...

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

    对于保存联系人,你需要在`AndroidManifest.xml`文件中添加`READ_CONTACTS`和`WRITE_CONTACTS`权限: ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:...

    AndroidStudio安卓课设-简易通讯录

    在这个通讯录应用中,SQLite被用来保存联系人的姓名、电话号码等信息。开发者需要创建数据库表结构,执行SQL语句进行数据的插入、查询、更新和删除。 **3. Activity和Intent** - **Activity**:在Android中,...

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

    3. **通话功能**:从通讯录选择联系人后,可以直接拨打电话,同时展示与该联系人的通话记录。 4. **短信功能**:支持发送和接收短信,可以快速选择已有联系人发送信息,同时显示信息记录。 5. **群组管理**:在...

    Android课程设计--便捷通讯录

    在这个通讯录应用中,可能包含了多个Activity(如主界面、联系人详情界面)和Fragment,用于展示不同的视图。布局文件可能包括ListView或RecyclerView来显示联系人列表,EditText用于输入搜索查询,以及各种Button...

    获取Android手机通讯录

    Android系统提供了一个名为Contacts Provider的API,它是一个内容提供者(Content Provider),负责管理应用程序间的数据共享,尤其是用户存储的联系人信息。要获取通讯录,我们需要在客户端应用中获取ContentResolver...

    android开发的手机通讯录(毕业设计,课程设计)

    这个项目涉及到多个Android开发的关键知识点,包括用户界面(UI)设计、SQLite数据库管理、联系人API的使用以及事件处理等。下面将对这些关键点进行深入讲解。 1. **用户界面设计**:在Android中,UI设计主要通过...

    android 实现手机通讯录代码

    本教程将引导你如何构建一个基础的通讯录应用,涵盖添加、删除、修改和查询联系人等功能。 首先,你需要了解Android的基本架构,包括Activity、Intent、BroadcastReceiver等组件。Activity是应用程序与用户交互的...

    使用jquery-mobile+html5实现android本地通讯录

    例如,`navigator.contacts.find`用于获取所有联系人,`navigator.contacts.create`用于新建联系人,`navigator.contacts.update`用于更新联系人信息,`navigator.contacts.remove`用于删除联系人。 5. **数据同步*...

    基于Android 的通讯录设计

    在这个项目中,SQLite用于持久化保存联系人的信息,包括姓名、电话号码、头像和备注。开发者需要创建数据库表结构,定义字段,以及编写SQL语句进行数据的增、删、查、改操作。此外,Android提供了SQLiteOpenHelper类...

    android 的一个通讯录小程序

    1. 使用Android Studio内置的布局编辑器(XML)设计联系人列表界面,通常包括一个ListView或RecyclerView来展示联系人。 2. 每个联系人条目应包含姓名、电话号码等关键信息,可以使用TextView和ImageView等组件来...

    android手机通讯录系统

    - **联系人管理**:用户可以通过通讯录功能保存、编辑和删除联系人的详细信息,包括姓名、电话号码、电子邮件地址等。此外,用户可以直接从联系人列表中拨打电话和发送短信。 - **搜索功能**:系统支持按索引条件...

    Android通讯录.zip

    开发者可以使用这些API来获取系统中的联系人数据,或者将自定义的联系人数据同步到系统通讯录中。例如,查询所有联系人的代码片段可能如下: ```java Uri contactsUri = ContactsContract.Contacts.CONTENT_URI; ...

    号码拨号,保存至通讯录

    在iOS开发中,类似的功能可以使用UITableView展示联系人,利用`MFPPhoneNumberHelper`拨打电话,以及使用`ABAddressBook`框架(iOS 9及以上版本需使用`Contacts`框架)来保存联系人。 以上就是关于"号码拨号,保存...

    Android导入导出txt通讯录工具.zip

    这个工具允许用户将他们的联系人数据导入到Android设备中,或者将设备上的联系人导出为纯文本(TXT)格式,便于备份或在不同设备间迁移数据。 首先,我们来看一下这个应用的核心功能。在Android中,系统提供了...

    二维码相关 java生成二维码名片 并且自动保存到手机通讯录中

    用户会看到一个新联系人界面,已预填充了从二维码中提取的信息,然后他们可以选择保存到通讯录。 在实际应用中,你可能还需要处理二维码扫描、解析和异常处理等其他方面的问题。总的来说,生成并保存二维码名片涉及...

    android应用源码超强功能通讯录

    这款应用的源码提供了深入了解Android系统如何处理联系人数据、UI设计、数据存储、搜索功能以及性能优化等方面的机会。以下是对这些核心知识点的详细阐述: 1. **Android SDK与环境搭建**:开发Android应用首先需要...

    android通讯录代码(非原生android)

    之后,使用`ContentResolver.insert()`或`update()`方法将数据保存到系统联系人库。 6. **联系人详情页**: 为每个联系人创建一个详情页面,展示他们的姓名、电话号码、电子邮件等信息。可以通过点击列表项跳转到...

    android取到通讯录中昵称的方法

    Android系统中的通讯录存储在联系人提供者(Contacts Provider)中,通过内容提供者(Content Provider)的方式来访问。我们通常通过Cursor来查询和操作数据。Android SDK提供了ContactsContract类,用来访问通讯录...

Global site tag (gtag.js) - Google Analytics