`

android添加联系人(直接添加到联系人数据库)

 
阅读更多
添加联系人姓名、手机、头像。。。
java核心代码
package com.kaka.addContact;

import java.io.ByteArrayOutputStream;

import android.app.Activity;
import android.content.ContentUris;
import android.content.ContentValues;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Contacts.Data;
import android.provider.ContactsContract.RawContacts;

public class Main extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		boolean result = insert("kaka", "110", "111@qq.com",
				"111");
		System.out.println("insert result " + result);
	}

	public boolean insert(String given_name, String mobile_number,
			String work_email, String im_qq) {
		try {
			ContentValues values = new ContentValues();

			// 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId
			Uri rawContactUri = getContentResolver().insert(
					RawContacts.CONTENT_URI, values);
			long rawContactId = ContentUris.parseId(rawContactUri);

			// 向data表插入姓名数据
			if (given_name != "") {
				values.clear();
				values.put(Data.RAW_CONTACT_ID, rawContactId);
				values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
				values.put(StructuredName.GIVEN_NAME, given_name);
				getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
						values);
			}

			// 向data表插入电话数据
			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);
				getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
						values);
			}

			// 向data表插入Email数据
			if (work_email != "") {
				values.clear();
				values.put(Data.RAW_CONTACT_ID, rawContactId);
				values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
				values.put(Email.DATA, work_email);
				values.put(Email.TYPE, Email.TYPE_WORK);
				getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
						values);
			}

			// 向data表插入QQ数据
			if (im_qq != "") {
				values.clear();
				values.put(Data.RAW_CONTACT_ID, rawContactId);
				values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
				values.put(Im.DATA, im_qq);
				values.put(Im.PROTOCOL, Im.PROTOCOL_QQ);
				getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
						values);
			}
			// 向data表插入头像数据
			Bitmap sourceBitmap = BitmapFactory.decodeResource(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);
			getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
					values);
		}

		catch (Exception e) {
			return false;
		}
		return true;
	}
}

Manifest中添加读写联系人数据权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.kaka.addContact"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Main"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
</manifest>


参考文章
http://daixj110.iteye.com/blog/1179278
http://www.devdiv.com/thread-61430-1-1.html
分享到:
评论

相关推荐

    android添加联系人

    在Android平台上,添加联系人是一项常见的任务,尤其对于开发者来说,理解如何操作联系人数据库是必要的。本教程将深入探讨如何通过编程方式在Android设备上添加联系人。 首先,我们需要了解Android系统的联系人...

    android 联系人模块例子

    3. **添加联系人**: 添加新联系人需要调用`ContentResolver.insert()`,传入`ContactsContract.RawContacts.CONTENT_URI`并创建一个` ContentValues`对象,填充必要的字段,如姓名、电话、电子邮件等。注意,...

    Android 联系人数据库介绍以及对联系人的基本操作.ppt

    Android 联系人数据库介绍及基本操作 Android 联系人数据库是 Android 操作系统中用于存储手机联系人的数据库。下面将对 Android 联系人数据库进行介绍,并对联系人的基本操作进行讲解。 一、联系人数据库 联系人...

    Android_联系人数据库介绍以及对联系人的基本操作

    该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的ContactID、联系次数、最后一次联系的时间、是否含有号码、是否被添加到收藏夹等信息。 2、raw_contacts表 该表保存了所有创建过的手机测...

    android合并重复联系人功能

    集成到系统代码中,我们可以创建一个系统服务或者广播接收器,监听联系人变化事件,当有新的联系人添加或修改时,自动运行合并算法,实时保持联系人库的整洁。 此外,为了提高性能,可以采用异步处理,避免阻塞UI...

    android平台联系人管理应用源码+项目(项目直接导入可运行)

    此项目中的界面可能包括列表视图(ListView)来显示联系人,以及用于编辑和添加联系人的活动(Activity)。 5. **权限管理**:在Android中,访问联系人数据需要在AndroidManifest.xml文件中声明相应的权限,例如`...

    安卓联系人数据库

    标题“安卓联系人数据库”暗示我们将探讨的是与安卓设备上的联系人存储相关的SQLite数据库。 `contacts.db`是这个话题的核心,它是一个SQLite数据库文件,存储了安卓用户的联系人信息。这些信息通常包括姓名、电话...

    Android联系人管理

    【Android联系人管理】是Android应用开发中的一个重要领域,它涉及到如何在Android设备上存储、检索、修改和删除联系人的信息。在这个项目中,你可能会遇到以下关键知识点: 1. **Android SDK**: 开发Android应用的...

    Android 系统联系人操作

    这篇博客"Android 系统联系人操作"可能是探讨如何在Android应用中与系统联系人数据库进行交互,包括添加、删除、修改和查询联系人等操作。我们将深入探讨这些关键知识点。 1. **Android权限管理**: 在Android中,...

    Android中使用Content Provider组件访问通讯录中的联系人和添加联系人案例详解

    添加联系人时,通常需要先创建一个`ContentValues`对象,填充联系人的属性,如姓名、电话号码等,然后调用`ContentResolver`的`insert()`方法,传入`ContactsContract.RawContacts.CONTENT_URI`和`ContentValues`...

    Android@联系人功能

    这通常涉及到读取Android的ContactsContract数据库,筛选出用户可能需要@的联系人信息,如姓名和唯一标识。 3. **显示联系人选择界面**:创建一个Dialog或者BottomSheet,展示联系人列表。列表项应包含联系人头像、...

    android读取系统联系人

    在AndroidManifest.xml文件中,必须添加读取联系人数据的权限声明,这是由于Android系统的隐私保护机制。相应的权限声明如下: ```xml &lt;uses-permission android:name="android.permission.READ_CONTACTS" /&gt; ``...

    Android Studio实现通讯录

    主页面包含`对联系人信息增删改查`这四种功能:在添加联系人页面,输入联系人信息,若联系人在数据库中不存在则可以添加成功;在删除和修改用户页面,都可以通过姓名搜索到指定联系人的信息,然后对联系人进行删除...

    android 联系人模块

    在Android平台上,联系人模块是应用开发中的一个重要组成部分,它允许用户管理他们的个人联系信息,如姓名、电话号码、电子邮件地址等。对于初学者来说,理解并实现这一功能可以帮助他们更好地掌握Android应用开发的...

    Android获取联系人

    首先,Android系统中的联系人数据存储在SQLite数据库中,开发者可以通过ContentProvider接口访问这些数据。ContactsContract类是Android提供的一个内容提供者(Content Provider),它为开发者提供了与系统联系人...

    android_实战_联系人

    在联系人应用中,ContentProvider扮演了桥梁的角色,将系统的联系人数据库与我们的应用连接起来。以下将详细介绍如何通过ContentProvider进行联系人操作。 1. **联系人获取**:首先,我们需要获取到系统的联系人...

    android slideBar 通过侧边栏快速搜索联系人

    遍历联系人数据源(如SQLite数据库中的联系人表),根据输入的关键词筛选出匹配的联系人。 3. **更新视图**:筛选出匹配的联系人后,需要实时更新`ListView`或`RecyclerView`的数据集,并调用`notifyDataSetChanged...

    Android 获取系统联系人并发送短信demo

    在Android平台上,获取系统联系人和发送短信是两个常见的功能,常常被用于开发社交或通讯类应用程序。这个“Android 获取系统联系人并发送短信demo”应该是提供了一个示例代码,帮助开发者理解如何实现这两个功能。...

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

    4. **事件处理**:通过监听按钮点击事件,触发相应功能,如添加联系人、删除联系人、查询联系人等。 5. **ContentResolver**:在Android中,ContentResolver是与内容提供者交互的接口,用于读写联系人数据。 实验...

    Android 绿豆通讯录【SQLite数据库】

    前情提要:Android 数据库(SQLite) 【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】 ...采用 SQLite数据库 + ListView数据展示控件,可将用户添加的所有信息,分条展示出

Global site tag (gtag.js) - Google Analytics