获取手机通讯录以及添加联系人
来源:互联网 发布:华信软件学院 编辑:程序博客网 时间: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 "添加联系人成功"; }}
阅读全文
0 0
- 获取手机通讯录以及添加联系人
- 获取手机通讯录联系人
- 获取手机通讯录联系人
- 获取手机联系人以及向通讯录插入数据.
- android获取手机通讯录联系人
- 获取手机通讯录联系人信息
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- 获取手机通讯录联系人 CNContacts
- 【Android】获取手机通讯录中的联系人信息
- iOS 获取手机通讯录的联系人
- ios 通讯录 获取分组以及各组联系人
- android 获取手机通讯录联系人,模拟通讯录显示
- java8 Spliterator接口API翻译
- 添加一个新的HMD到OSVR
- Dubbo教程(一)----Dubbo框架简介
- hdu 4841 圆桌问题
- Java_观察者模式(Observable和Observer)
- 获取手机通讯录以及添加联系人
- dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
- JAVAWEB开发之Solr的入门——Solr的简介以及简单配置和使用、solrJ的使用、Solr数据同步插件
- HDU
- spring boot整合redis(单机+集群)
- R中时间序列分析-趋势预测ARIMA
- SQL之case when then else end用法
- vuex学习七----Modules
- Spring Cloud与分布式系统