增加联系人到通讯录

来源:互联网 发布:办公软件表格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

原创粉丝点击