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; }}
阅读全文
0 0
- Android 通讯录工具栏
- android 通讯录
- Android通讯录
- android通讯录
- Android通讯录
- Android 通讯录
- Android 通讯录
- android通讯录
- Android工具栏--ActionBar
- Android studio工具栏不见了
- android读取通讯录和写入通讯录
- [通讯录] android通讯录数据库表解析和添加,访问通讯录
- Android通讯录同步
- Android SDK2.0 通讯录
- android获取通讯录信息
- 高仿android通讯录
- android操作手机通讯录
- android 通讯录跳转
- PHP发送邮件详细说明
- 30分钟掌握ES6/ES2015核心内容(下)
- Linux的Crontab任务常用例子
- 基于腾讯信鸽平台的手游流失用户预测模型概览
- 设计模式总结篇
- Android 通讯录工具栏
- 【net命令建立连接】不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
- Spring Boot 之 HelloWorld详解
- 小程序之隐藏显示功能
- 修改MYSQL5.7数据库文件存放位置
- Chrome神器Vimium快捷键学习记录
- SpringMVC下载word(非poi)
- Redis之链表
- win10与ubuntu16.04双系统安装