获取手机通讯录以及添加联系人

来源:互联网 发布:华信软件学院 编辑:程序博客网 时间:2024/05/23 22:26

Util代码:

package com.mfc.contractutil;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.ContentProviderOperation;import android.content.ContentProviderResult;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.Phone;import android.provider.ContactsContract.CommonDataKinds.StructuredName;import android.provider.ContactsContract.Contacts.Data;import android.provider.ContactsContract.RawContacts;/** * Created by Administrator on 2017/7/24. * 对通讯录进行操作的工具类 */public class ContractUtils {    Context context;    public ContractUtils(Context context) {        this.context = context;    }    // 获取手机的通讯录(只获取姓名和id)    public List<Map<String, String>> getAllContact(String uname) {        ContentResolver contentResolver = context.getContentResolver();        Uri uri = ContactsContract.Contacts.CONTENT_URI;        Cursor cursor = null;        if(uname!=null&&!uname.equals("")){            cursor = contentResolver.query(uri, null,ContactsContract.Contacts.DISPLAY_NAME+" like '%"+uname+"%'" , null, null);        }else{            cursor = contentResolver.query(uri, null, null, null, null);        }        List<Map<String, String>> list = new ArrayList<Map<String, String>>();        while (cursor.moveToNext()) {            Map<String, String> map = new HashMap<String ,String>();            String contactId = cursor.getString(cursor                    .getColumnIndex(ContactsContract.Contacts._ID));            String name = cursor.getString(cursor                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));            map.put("contactId", contactId);            map.put("name", name);            list.add(map);        }        return list;    }    // 根据联系人的id获取他的详细信息(手机号和邮件)    // 思路:每个联系人可能有多个电话以及邮件,这时本方法返回的是一个map集合,集合里面存的是对象,对象可能有某个用户的所有电话(list集合)和所有的邮件(list集合)    public Map<String, Object> getOneContact(String contactId) {        Map<String, Object> map = new HashMap<String, Object>();        ContentResolver contentResolver = context.getContentResolver();        Uri uri = ContactsContract.Contacts.CONTENT_URI;        // 查询姓名        Cursor cursor = contentResolver.query(uri, null,                ContactsContract.Contacts._ID + "="                        + contactId, null, null);        if(cursor.moveToFirst()){            String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));            map.put("name", name);        }        Cursor phones = contentResolver.query(                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="                        + contactId, null, null);        List<String> phonelist=new ArrayList<String>();        while (phones.moveToNext()) {            String phoneNumber = phones                    .getString(phones                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));            phonelist.add(phoneNumber);        }        map.put("phonelist", phonelist);        phones.close();        Cursor emails = contentResolver.query(                ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,                ContactsContract.CommonDataKinds.Email.CONTACT_ID + "="                        + contactId, null, null);        List<String> emaillist=new ArrayList<String>();        while (emails.moveToNext()) {            String emailsAddress = emails                    .getString(emails                            .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));            emaillist.add(emailsAddress);        }        map.put("emaillist", emaillist);        emails.close();        return map;    }    public String save(Map<String,String> map) {        ContentValues values = new ContentValues();        //首选向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId        Uri  rawContactUri = context.getContentResolver().insert(RawContacts.CONTENT_URI, values);        long rawContactId = ContentUris.parseId(rawContactUri);        //往data表插入姓名数据        values.clear();        values.put(Data.RAW_CONTACT_ID, rawContactId);        values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);//内容类型        values.put(StructuredName.GIVEN_NAME, map.get("name"));        context.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);        //往data表插入电话数据        values.clear();        values.put(Data.RAW_CONTACT_ID, rawContactId);        values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);        values.put(Phone.NUMBER, map.get("phonenumber"));        values.put(Phone.TYPE, Phone.TYPE_MOBILE);        context.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);        //往data表插入email数        values.clear();        values.put(Data.RAW_CONTACT_ID, rawContactId);        values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);        values.put(Email.DATA, map.get("email"));        values.put(Email.TYPE, Email.TYPE_WORK);        context.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);        return "添加联系人成功";    }}


原创粉丝点击