import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
public class ContactsHelper {
private static String uri_rawcontacts = "content://com.android.contacts/raw_contacts";
private static String uri_contacts_phones = "content://com.android.contacts/data/phones";
private static String uri_contacts_emails = "content://com.android.contacts/data/emails";
private static String uri_contacts_data = "content://com.android.contacts/data";
// 查询联系人的信息
public static List<Map<String, Object>> selectContactsInfo(
ContentResolver resolver) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Cursor contactsCursor = resolver.query(Uri.parse(uri_rawcontacts),
new String[] { "_id", "display_name" }, null, null, null);
while (contactsCursor.moveToNext()) {
Map<String, Object> map = new HashMap<String, Object>();
int contactsId = contactsCursor.getInt(contactsCursor
.getColumnIndex("_id"));
String displayName = contactsCursor.getString(contactsCursor
.getColumnIndex("display_name"));
map.put("_id", contactsId);
map.put("display_name", displayName);
// 根据联系人的id去data表获取电话号码的信息
Cursor phoneCursor = resolver.query(Uri.parse(uri_contacts_phones),
new String[] { "raw_contact_id", "data1" },
"raw_contact_id=?", new String[] { contactsId + "" }, null);
StringBuilder sb = new StringBuilder();
while (phoneCursor.moveToNext()) {
sb.append(phoneCursor.getString(1));
sb.append("|");
}
map.put("phones", sb.toString());
// 根据联系人的id去data表获取email的信息
Cursor emailCursor = resolver.query(Uri.parse(uri_contacts_emails),
new String[] { "raw_contact_id", "data1" },
"raw_contact_id=?", new String[] { contactsId + "" }, null);
StringBuilder sb2 = new StringBuilder();
while (emailCursor.moveToNext()) {
sb2.append(emailCursor.getString(1));
sb2.append("|");
}
map.put("emails", sb2.toString());
list.add(map);
}
return list;
}
// 修改联系人的姓名
public static boolean updateContactsName(ContentResolver resolver,
Map<String, Object> map, String id) {
ContentValues values = new ContentValues();
// 更改raw_contacts表中的姓名
values.put("display_name", map.get("display_name").toString());
values.put("display_name_alt", map.get("display_name").toString());
values.put("sort_key", map.get("display_name").toString());
values.put("sort_key_alt", map.get("display_name").toString());
int result1 = resolver.update(Uri.parse(uri_rawcontacts), values,
"_id=?", new String[] { id });
// 更改data表中的姓名
values.clear();
values.put("data1", map.get("display_name").toString());
values.put("data2", map.get("display_name").toString());
int result2 = resolver.update(Uri.parse(uri_contacts_data), values,
"raw_contact_id=? and mimetype_id=?", new String[] { id, "7" });
// 更改data表中的phone
values.clear();
values.put("data1", map.get("phones").toString());
values.put("data2", 2);
int result3 = resolver.update(Uri.parse(uri_contacts_data), values,
"raw_contact_id=? and mimetype_id=?", new String[] { id, "5" });
// 更改data表中的phone
values.clear();
values.put("data1", map.get("emails").toString());
values.put("data2", 1);
int result4 = resolver.update(Uri.parse(uri_contacts_data), values,
"raw_contact_id=? and mimetype_id=?", new String[] { id, "1" });
// 更改data表中的email
if (result1 > 0 && result2 > 0 && result3 > 0 && result4 > 0) {
return true;
} else {
return false;
}
}
// 删除联系人信息
public static boolean deleteContactByName(ContentResolver resolver,
String displayName) {
int data = resolver.delete(Uri.parse(uri_rawcontacts),
"display_name=?", new String[] { displayName });
if (data > 0) {
return true;
}
return false;
}
// 删除联系人信息
public static boolean deleteContactById(ContentResolver resolver, String id) {
int data = resolver.delete(Uri.parse(uri_rawcontacts), "_id=?",
new String[] { id });
if (data > 0) {
return true;
}
return false;
}
// 新增数据
public static void insertContact(ContentResolver resolver,
Map<String, Object> map) {
ContentValues values = new ContentValues();
// 往raw_contacts表中插入一条空数据,目的是获取联系人的id
Uri newUri = resolver.insert(Uri.parse(uri_rawcontacts), values);
long id = ContentUris.parseId(newUri);
// 往data表中插入联系人姓名的数据
values.put("raw_contact_id", id);
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data1", map.get("display_name").toString());
values.put("data2", map.get("display_name").toString());
resolver.insert(Uri.parse(uri_contacts_data), values);
// 往data表中插入联系人的电话信息
values.clear();
values.put("raw_contact_id", id);
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data1", map.get("phones").toString());
values.put("data2", 2);
resolver.insert(Uri.parse(uri_contacts_data), values);
// 往data表中插入联系人的email
values.clear();
values.put("raw_contact_id", id);
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data1", map.get("emails").toString());
values.put("data2", 1);
resolver.insert(Uri.parse(uri_contacts_data), values);
}
}
分享到:
相关推荐
Android导入txt通讯录工具 具体使用方法见http://blog.csdn.net/zyc13701469860/article/details/7217836
针对OUTLOOK无法直接导出全球通讯录所开发的工具,功能不也不止这些,很全面,不过是英文版的
Android导入导出txt通讯录工具.zip
android 调用系统联系人列表工具类,两种方式进行处理。
winfrom窗体通讯录 ,用到类对象 属性 集合
Android导入导出txt通讯录工具源码 具体使用方法见 http://blog.csdn.net/zyc13701469860/article/details/7217836
毕业设计-使用node写的通讯录工具.zip 毕业设计-使用node写的通讯录工具.zip 毕业设计-使用node写的通讯录工具.zip 毕业设计-使用node写的通讯录工具.zip
安卓Android源码——Android导入导出txt通讯录工具.zip
Android导入导出txt通讯录工具.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
献给所有喜欢长虹长待机的朋友们 如果要说手机待机时间最长非长虹莫属,008手机达到了顶峰...有时间再做一个通用的手机通讯录工具。本工具在008-3大悍马通过,大家有什么问题可邮:sportboy@tom.com . 2014.10.19
Android导入导出txt通讯录工具【附源码】
通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录通讯录
个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人通讯录设计个人...
是在一个英文开源项目上修改的,支持图像的选择,拨打电话,发送短信,修改信息,删除联系人等功能
毕业设计,使用 node 写的通讯录工具
本实例是一个通讯录程序,用于记录好友的信息。首先在数据库中设计一种那个数据表,然后通过程序添加数据。
毕业设计的主题是创建一个使用 Node.js 编写的通讯录工具。这个工具可以用于存储、管理和检索联系人信息。以下是一个简单的项目概述,您可以根据自己的需求进行修改和扩展。 1. 项目名称:Node.js 通讯录工具 2. ...
java 简单的通讯录类 java 简单的通讯录类