包括联系人的添加、数量查询和获取系统联系人!
package cn.hnshangyu.cloudcommunication.utils;
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 java.util.HashMap;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* Created by Administrator on 2017/1/6.
* 添加联系人到系统数据库
*/
public class AddressBookUtils {
/**
* 往数据库中新增联系人
*
* @param mContext
* @param name
* @param phone
*/
public static void AddContact(Context mContext, String name, String phone) {
//创建一个空的ContentValues
ContentValues values = new ContentValues();
//向ContactsContract.RawContacts.CONTENT_URI执行一个空值插入
//目的是获取系统返回的rawContactId,以便添加联系人名字和电话使用同一个id
Uri rawContactUri = mContext.getContentResolver().insert(
ContactsContract.RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
//清空values
//设置id
//设置内容类型
//设置联系人姓名
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name);
//向联系人URI添加联系人姓名
mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
//清空values
//设置id
//设置内容类型
//设置联系人电话
//设置电话类型
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
}
/**
* 得到数据库数量信息
*/
public static String getContactsDataNum(Context mContext) {
//使用ContentResolver查找联系人数据
Cursor cursor = mContext.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
int count = cursor.getCount();
//使用完毕关闭Cursor
cursor.close();
return String.valueOf(count);
}
/**
* 得到数据库信息
*/
public static List<HashMap> getContactsData(Context mContext) {
//使用ContentResolver查找联系人数据
Cursor cursor = mContext.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
CopyOnWriteArrayList<HashMap> mListItems = new CopyOnWriteArrayList<>();
//便利查询结果,获取系统中的所有人
while (cursor.moveToNext()) {
//获取联系人id
String contactId = cursor.getString(cursor.getColumnIndex(
ContactsContract.Contacts._ID));
LogUtils.i("huangxiaoguo", contactId);
/**
* 获取联系人姓名
*/
String name = cursor.getString(cursor.getColumnIndex(
ContactsContract.Contacts.DISPLAY_NAME));
LogUtils.i("huangxiaoguo", name);
//使用过ContentResolver通过id查找联系人的电话
//此处为了方便显示,只取联系人的第一个号码(可能有多个号码)
Cursor phones = mContext.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId
, null, null);
phones.moveToNext();
/**
* 联系人的电话
*/
String phone = phones.getString(phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
LogUtils.i("huangxiaoguo", phone);
//使用完毕关闭Cursor
phones.close();
//创建Map添加到mListItems中用于创建SimpleAdapter
HashMap<String, String> listItem = new HashMap<String, String>();
listItem.put("name", name);
listItem.put("phone", phone);
mListItems.add(listItem);
}
//使用完毕关闭Cursor
cursor.close();
return mListItems;
}
}
作者:huangxiaoguo1 发表于2017/1/6 14:05:05 原文链接
阅读:69 评论:0 查看评论