增加联系人到通讯录
来源:互联网 发布:办公软件表格excel 编辑:程序博客网 时间:2024/05/12 04:36
直接上代码:
管理通讯录的类:ManagerContact.java
package com.example.contactdemo;import java.util.ArrayList;import android.content.ContentProviderOperation;import android.content.ContentResolver;import android.content.ContentUris;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.provider.ContactsContract;import android.provider.ContactsContract.CommonDataKinds.Email;import android.provider.ContactsContract.CommonDataKinds.Note;import android.provider.ContactsContract.CommonDataKinds.Organization;import android.provider.ContactsContract.CommonDataKinds.Phone;import android.provider.ContactsContract.CommonDataKinds.StructuredName;import android.provider.ContactsContract.CommonDataKinds.Website;import android.provider.ContactsContract.Data;import android.provider.ContactsContract.RawContacts;import android.util.Log;/** * 管理通讯录的类 * @author Willen * */public class ManagerContact {// 根据姓名删除联系人public void delContact(Context context, String name) {Cursor cursor = context.getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { name }, null);ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();if (cursor.moveToFirst()) {do {long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID));ops.add(ContentProviderOperation.newDelete(ContentUris.withAppendedId(RawContacts.CONTENT_URI, Id)).build());try {context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);} catch (Exception e) {}} while (cursor.moveToNext());cursor.close();}}// 根据号码删除联系人public void delContactByNumber(Context context, String number) {Cursor cursor = context.getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },ContactsContract.Contacts.Data.DATA1 + "=?",new String[] { number }, null);ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();if (cursor.moveToFirst()) {do {long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID));ops.add(ContentProviderOperation.newDelete(ContentUris.withAppendedId(RawContacts.CONTENT_URI, Id)).build());try {context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);} catch (Exception e) {}} while (cursor.moveToNext());cursor.close();}}// 根据姓名更新联系人public boolean updateContact(Context context, String oldname, String name,String phone, String email, String website, String organization,String note) {Cursor cursor = context.getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { oldname }, null);if (!cursor.moveToFirst()) {return false;}String id = cursor.getString(cursor.getColumnIndex(Data.RAW_CONTACT_ID));cursor.close();ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?"+ " AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());// 更新emailops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?"+ " AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());// 更新姓名ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());// 更新网站ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());// 更新公司ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE }).withValue(Organization.COMPANY, organization).build());// 更新noteops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());try {context.getContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);return true;} catch (Exception e) {return false;}}// 根据号码更新联系人public boolean updateContactByNumber(Context context, String number,String name, String phone, String email, String website,String organization, String note) {Cursor cursor = context.getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },ContactsContract.Contacts.Data.DATA1 + "=?",new String[] { number }, null);if (!cursor.moveToFirst()) {Log.e("InsertContact", "updateContactByNumber");InsertContact(context, name, number);return false;}String id = cursor.getString(cursor.getColumnIndex(Data.RAW_CONTACT_ID));cursor.close();ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?"+ " AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());// 更新emailops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?"+ " AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());// 更新姓名ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());// 更新网站ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());// 更新公司ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE }).withValue(Organization.COMPANY, organization).build());// 更新noteops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());try {context.getContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);return true;} catch (Exception e) {return false;}}// 添加联系人public void InsertContact(Context context, String name, String phone) {ContentResolver resolver = context.getContentResolver();Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentValues values = new ContentValues();// 向raw_contacts插入一条除了ID之外, 其他全部为NULL的记录, ID是自动生成的long id = ContentUris.parseId(resolver.insert(uri, values));// 添加联系人姓名uri = Uri.parse("content://com.android.contacts/data");values.put("raw_contact_id", id);values.put("data2", name);values.put("mimetype", "vnd.android.cursor.item/name");resolver.insert(uri, values);// 添加联系人电话values.clear(); // 清空上次的数据values.put("raw_contact_id", id);values.put("data1", phone);values.put("data2", "2");values.put("mimetype", "vnd.android.cursor.item/phone_v2");resolver.insert(uri, values);}//判断联系人是否在通讯录内public boolean getContactPeople(Context context,String incomingNumber) { ContentResolver contentResolver = context.getContentResolver(); Cursor cursor = null; String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER }; cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.NUMBER + "=?", new String[] { incomingNumber }, ""); if(cursor.getCount() == 0) { return true; } return false; }}
MainActivity.java
package com.example.contactdemo;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Toast;public class MainActivity extends Activity {Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);context = this;findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {ManagerContact managerContact = new ManagerContact();String phone = "15992470000";if (!managerContact.getContactPeople(context, phone)) {Toast.makeText(context, "本地通讯录已包此人信息", Toast.LENGTH_SHORT).show();}else {managerContact.InsertContact(context, "aa", phone);Toast.makeText(context, "添加成功!", Toast.LENGTH_SHORT).show();}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}
布局文件只有一个button。资源:http://download.csdn.net/detail/viviwen123/5194623
- 增加联系人到通讯录
- 保存联系人到系统通讯录
- 增加个人信息到通讯录
- Android批量添加联系人到通讯录
- Android实现批量添加联系人到通讯录
- Android跳转到通讯录选择联系人
- iOS保存联系人到系统通讯录
- 增加批量导入联系人功能 - 天涯人脉通讯录2010
- iPhone通讯录联系人的增加、删除、修改的操作
- iPhone通讯录联系人的增加、删除、修改的操作
- 通过代码添加联系人到通讯录的方法
- 同步Android手机联系人到iPhone手机通讯录
- iOS 使用ContactsUI保存新联系人到系统通讯录
- Android跳转到系统通讯录新增和修改联系人
- Android-从通讯录导入某个联系人到页面
- 通讯录, 获取联系人, 删除联系人
- android群发短信到通讯录所有联系人上并动态替换其中联系人信息
- ios 操作通讯录联系人
- 三角形类(三)
- 5-1 三角形类(构造函数)
- Search in Rotated Sorted Array II
- 第四周上级任务项目五 数组做数据成员
- 5_3长方体
- 增加联系人到通讯录
- 设计三角形类
- 为你详解Linux安装GCC方法
- 创建型设计模式——简单工厂模式
- C语言文件操作
- 第五周项目一
- 互芯平台加入国外的gprs参数
- 第五周任务1:三角形类(默认构造函数)
- 我的第一个Hibernate应用:Hibernate__002