Android 通讯录工具栏

来源:互联网 发布:python 赋值 变量名 编辑:程序博客网 时间:2024/06/05 11:29
备份在csdn上方便查阅
用于联系人获取,添加,删除,查询等操作。
public class ContactsAccessUtil {    final static String TAG = "ContactsAccess";    private final static String PhoneAccountName = "Phone";    final static String SIMAccountName = "SIM";    // 读取联系人信息    public static List<ContactData> getPhoneContacts(Context context, List<ContactData> list) {        if (list == null)            list = new ArrayList<ContactData>();        try {            ContentResolver contentResolver = context.getContentResolver();            Cursor cur = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);            if (cur != null && cur.getCount() > 0) {                ArrayList<String> emailTelPhoneList = new ArrayList<String>();                ArrayList<String> emailPhoneList = new ArrayList<String>();                while (cur.moveToNext()) {                    String id = cur.getString(                            cur.getColumnIndex(ContactsContract.Contacts._ID));                    String name = cur.getString(cur.getColumnIndex(                            ContactsContract.Contacts.DISPLAY_NAME));                    //获取电话号码                    if (cur.getInt(cur.getColumnIndex(                            ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) {                        emailTelPhoneList =getTelphoneList(context,id);                    }                    emailPhoneList = getEmailList(context,id);                    //添加到列表                    ContactData data = new ContactData();                    data.id = id;                    data.name = name;                    if (emailTelPhoneList.size()>0){  //我的项目只需要获取第一个联系电话                        data.number = emailTelPhoneList.get(0);                    }                    if (emailPhoneList.size()>0){ //我的项目只需要获取第一个email                        data.InsertDate =emailPhoneList.get(0);                    }                    list.add(data);                }            }            cur.close();        }catch (Exception e){            Log.e("getPhoneContacts","getPhoneContacts:"+e);        }        return list;    }    /**     * 获取Email     * @param id Contacts._ID     * @return     */    public static ArrayList<String> getEmailList(Context context,String id){        ContentResolver contentResolver =context.getContentResolver();//        ArrayList<String> emailNameList=new ArrayList<String>();        ArrayList<String> emailPhoneList=new ArrayList<String>();        //===========获取Email        Cursor emails = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,                ContactsContract.CommonDataKinds.Email.CONTACT_ID+ " = " + id, null, null);        while (emails.moveToNext())        {            // This would allow you get several email addresses            String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));//            Log.v(name+"==>", emailAddress);            if ((!emailAddress.equalsIgnoreCase(""))&&(emailAddress.contains("@")))            {//                emailNameList.add(name);                emailPhoneList.add(emailAddress);//                            emailIndex++;            }        }        emails.close();        return emailPhoneList;    }    public static ArrayList<String> getTelphoneList(Context context,String id){        ContentResolver contentResolver =context.getContentResolver();//        ArrayList<String> emailNameList=new ArrayList<String>();        ArrayList<String> emailPhoneNoList=new ArrayList<String>();        Cursor pCur = contentResolver.query(                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                null,                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",                new String[]{id}, null);        assert pCur != null;        while (pCur.moveToNext()) {            String phoneNo = pCur.getString(pCur.getColumnIndex(                    ContactsContract.CommonDataKinds.Phone.NUMBER));//ContactsContract.CommonDataKinds.Email.DATA            emailPhoneNoList.add(phoneNo);        }        pCur.close();        return emailPhoneNoList;    }    public static boolean insertPhoneContact(Context context, ContactData contact) {        /**         * 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId         * 这时后面插入data表的依据,只有执行空值插入,才能使插入的联系人在通讯录里面可见         */        Uri rcUri;        ContentValues values = new ContentValues();//            ContentResolver resolver = context.getContentResolver();        //首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId        values.put(ContactsContract.RawContacts.ACCOUNT_NAME, PhoneAccountName);        values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, "null");        values.put(ContactsContract.Contacts.DISPLAY_NAME, contact.getContactName());        Uri rawContactUri = context.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);        long rawContactId = ContentUris.parseId(rawContactUri);        contact.setId(rawContactId + "");        //往data表入姓名数据        values.clear();        values.put(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);        values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);//内容类型        values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, contact.getContactName());//        values.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, contact.getInsertDate());//家庭//        values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contact.getContactName());//家庭        rcUri = context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);        if (rcUri != null) {            //往data表入电话数据            values.clear();            values.put(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);            values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);            values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, contact.getNumber());            values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK);            rcUri = context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);            //往data表里写入Email的数据            values.clear();            values.put(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);            values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);            values.put(ContactsContract.CommonDataKinds.Email.DATA, contact.getInsertDate()+"@palmv.cn");            values.put(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK);            rcUri =context.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);        }        return (rcUri != null);    }    /**     * 根据contactId删除联系人数据     * 0失败     */    public static int deletePhoneContact(Context context, String name, String contactId) {        ContentResolver resolver = context.getContentResolver();        int rc1, rc2;        //删除data表中数据        String where = ContactsContract.Data.CONTACT_ID + " =?";        String[] whereparams = new String[]{contactId};        rc1 = resolver.delete(ContactsContract.Data.CONTENT_URI, where, whereparams);        //删除rawContact表中数据        where = ContactsContract.RawContacts.CONTACT_ID + " =?";        whereparams = new String[]{contactId};        rc2 = resolver.delete(ContactsContract.RawContacts.CONTENT_URI, where, whereparams);        return (rc1 > 0 && rc2 > 0) ? (rc1 + rc2) : 0;    }}