- 浏览: 22000 次
- 性别:
- 来自: 北京
文章分类
最新评论
添加联系人
private void addContact(Context context, String name,
String organisation,String phone, String fax, String email, String address,String website){
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
//在名片表插入一个新名片
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null).withValue(ContactsContract.RawContacts._ID, 0).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).withValue(
ContactsContract.RawContacts.AGGREGATION_MODE,ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());
// add name
//添加一条新名字记录;对应RAW_CONTACT_ID为0的名片
if (!name.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,name).build());
}
//添加昵称
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Nickname.NAME,"Anson昵称").build());
// add company
if (!organisation.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Organization.COMPANY,organisation).withValue(
ContactsContract.CommonDataKinds.Organization.TYPE,ContactsContract.CommonDataKinds.Organization.TYPE_WORK).build());
}
// add phone
if (!phone.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,phone).withValue(ContactsContract.CommonDataKinds.Phone.TYPE,1).build());
}
// add Fax
if (!fax.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Phone.NUMBER,fax)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK).build());
}
// add email
if (!email.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Email.DATA,email).withValue(ContactsContract.CommonDataKinds.Email.TYPE,1).build());
}
// add address
if (!address.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.StructuredPostal.STREET,address)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());
}
// add website
if (!website.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Website.URL,website)
.withValue(
ContactsContract.CommonDataKinds.Website.TYPE,
ContactsContract.CommonDataKinds.Website.TYPE_WORK).build());
}
// add IM
String qq1="452824089";
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Im.DATA1,qq1)
.withValue(
ContactsContract.CommonDataKinds.Im.PROTOCOL,
ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ).build());
// add logo image
// Bitmap bm = logo;
// if (bm != null) {
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
// bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
// byte[] photo = baos.toByteArray();
// if (photo != null) {
//
// ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
// .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
// .withValue(ContactsContract.Data.MIMETYPE,
// ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
// .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, photo)
// .build());
// }
// }
try {
context.getContentResolver().applyBatch(
ContactsContract.AUTHORITY, ops);
} catch (Exception e){
}
}
1.删除联系人
private void delContact(Context context, String name) {
Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },
ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { name }, null);
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
if (cursor.moveToFirst()) {
do {
long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID));
ops.add(ContentProviderOperation.newDelete(
ContentUris.withAppendedId(RawContacts.CONTENT_URI,Id)).build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e){}
} while (cursor.moveToNext());
cursor.close();
}
}
更新联系人信息
private void updateContact(Context context,String oldname, String name, String phone, String email,String website, String organization, String note) {
Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },
ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { oldname }, null);
cursor.moveToFirst();
String id = cursor.getString(cursor.getColumnIndex(Data.RAW_CONTACT_ID));
cursor.close();
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
更新电话号码
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(
Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +
" AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,
String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());
// 更新email
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +" AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,
String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());
// 更新姓名
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());
// 更新网站
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());
// 更新公司
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE })
.withValue(Organization.COMPANY, organization).build());
// 更新note
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());
try{
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
}
}
添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
///联系人分组操作
Cursor cursor = getContentResolver().query(Groups.CONTENT_URI,null,null,null,null);
for (cursorAll.moveToFirst();!(cursorAll.isAfterLast());cursorAll.moveToNext()) {
组名:cursor.getString(cursor.getColumnIndex(Groups.TITLE));
组id:curso.getLong(cursor.getColumnIndex(Groups._ID));
}
新建组(名字为name):
ContentValues values = new ContentValues();
String name = "同学";
values.put(Groups.TITLE, name);
getContentResolver().insert(Groups.CONTENT_URI, values);
删除组(Id为groupId):
getContentResolver().delete(Uri.parse(Groups.CONTENT_URI +"?" +ContactsContract.CALLER_IS_SYNCADAPTER + "=true"),Groups._ID+"="+groupId,null);
给组重命名(oldName;newName;groupId):
Uri uri = ContentUris.withAppendedId(Groups.CONTENT_URI, groupId);
ContentValues values = new ContentValues();
values.put(Groups.TITLE,newName);
getContentResolver().update(uri,values,null,null);
给组添加成员(groupId,personId):
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,personId);
values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,groupId);
values.put(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
给组移除成员(groupId,personId):
getContentResolver().delete(ContactsContract.Data.CONTENT_URI,ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID + "=? and " +ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=? and " +ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "=?",new String[]{"" + personId,"" + groupId,ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE});
注:
1 添加成员到分组的personId是指RawContacts._ID,而不是Contacts._ID。
2 当一个联系人名片里有几个联系人的情况时,要把每个RawContacts._ID都添加进分组。
这个问题很严重啊,使用Contacts._ID,碰到有合并的联系人以后,关于分组的所有操作都会错乱掉。
private void addContact(Context context, String name,
String organisation,String phone, String fax, String email, String address,String website){
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
//在名片表插入一个新名片
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null).withValue(ContactsContract.RawContacts._ID, 0).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).withValue(
ContactsContract.RawContacts.AGGREGATION_MODE,ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());
// add name
//添加一条新名字记录;对应RAW_CONTACT_ID为0的名片
if (!name.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,name).build());
}
//添加昵称
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Nickname.NAME,"Anson昵称").build());
// add company
if (!organisation.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Organization.COMPANY,organisation).withValue(
ContactsContract.CommonDataKinds.Organization.TYPE,ContactsContract.CommonDataKinds.Organization.TYPE_WORK).build());
}
// add phone
if (!phone.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,phone).withValue(ContactsContract.CommonDataKinds.Phone.TYPE,1).build());
}
// add Fax
if (!fax.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Phone.NUMBER,fax)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK).build());
}
// add email
if (!email.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Email.DATA,email).withValue(ContactsContract.CommonDataKinds.Email.TYPE,1).build());
}
// add address
if (!address.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.StructuredPostal.STREET,address)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());
}
// add website
if (!website.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Website.URL,website)
.withValue(
ContactsContract.CommonDataKinds.Website.TYPE,
ContactsContract.CommonDataKinds.Website.TYPE_WORK).build());
}
// add IM
String qq1="452824089";
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Im.DATA1,qq1)
.withValue(
ContactsContract.CommonDataKinds.Im.PROTOCOL,
ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ).build());
// add logo image
// Bitmap bm = logo;
// if (bm != null) {
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
// bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
// byte[] photo = baos.toByteArray();
// if (photo != null) {
//
// ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
// .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
// .withValue(ContactsContract.Data.MIMETYPE,
// ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
// .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, photo)
// .build());
// }
// }
try {
context.getContentResolver().applyBatch(
ContactsContract.AUTHORITY, ops);
} catch (Exception e){
}
}
1.删除联系人
private void delContact(Context context, String name) {
Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },
ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { name }, null);
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
if (cursor.moveToFirst()) {
do {
long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID));
ops.add(ContentProviderOperation.newDelete(
ContentUris.withAppendedId(RawContacts.CONTENT_URI,Id)).build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e){}
} while (cursor.moveToNext());
cursor.close();
}
}
更新联系人信息
private void updateContact(Context context,String oldname, String name, String phone, String email,String website, String organization, String note) {
Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },
ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { oldname }, null);
cursor.moveToFirst();
String id = cursor.getString(cursor.getColumnIndex(Data.RAW_CONTACT_ID));
cursor.close();
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
更新电话号码
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(
Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +
" AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,
String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());
// 更新email
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +" AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,
String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());
// 更新姓名
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());
// 更新网站
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());
// 更新公司
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE })
.withValue(Organization.COMPANY, organization).build());
// 更新note
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());
try{
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
}
}
添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
///联系人分组操作
Cursor cursor = getContentResolver().query(Groups.CONTENT_URI,null,null,null,null);
for (cursorAll.moveToFirst();!(cursorAll.isAfterLast());cursorAll.moveToNext()) {
组名:cursor.getString(cursor.getColumnIndex(Groups.TITLE));
组id:curso.getLong(cursor.getColumnIndex(Groups._ID));
}
新建组(名字为name):
ContentValues values = new ContentValues();
String name = "同学";
values.put(Groups.TITLE, name);
getContentResolver().insert(Groups.CONTENT_URI, values);
删除组(Id为groupId):
getContentResolver().delete(Uri.parse(Groups.CONTENT_URI +"?" +ContactsContract.CALLER_IS_SYNCADAPTER + "=true"),Groups._ID+"="+groupId,null);
给组重命名(oldName;newName;groupId):
Uri uri = ContentUris.withAppendedId(Groups.CONTENT_URI, groupId);
ContentValues values = new ContentValues();
values.put(Groups.TITLE,newName);
getContentResolver().update(uri,values,null,null);
给组添加成员(groupId,personId):
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,personId);
values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,groupId);
values.put(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
给组移除成员(groupId,personId):
getContentResolver().delete(ContactsContract.Data.CONTENT_URI,ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID + "=? and " +ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=? and " +ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "=?",new String[]{"" + personId,"" + groupId,ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE});
注:
1 添加成员到分组的personId是指RawContacts._ID,而不是Contacts._ID。
2 当一个联系人名片里有几个联系人的情况时,要把每个RawContacts._ID都添加进分组。
这个问题很严重啊,使用Contacts._ID,碰到有合并的联系人以后,关于分组的所有操作都会错乱掉。
发表评论
文章已被作者锁定,不允许评论。
-
android win8效果实现进阶(一)
2013-10-24 23:30 919最近在研究android 版本的win8效果,只牵强实现了一部 ... -
AsyncImageLoader
2013-07-31 21:37 0非原著,节选自http://code.google.com/p ... -
ubuntu 12.04驱动开发环境配置
2013-05-04 00:46 21791.在终端运行#uname-r查看现有的内核的版本,本人ubu ... -
android取得收藏夹的联系人
2012-06-06 18:43 1806摘自:http://blog.csdn.net/qiaonin ... -
android源码下载以及编译
2012-02-25 23:23 1794redhat linux 一、下载并编译安装git wge ... -
android底层开发
2012-02-24 16:31 1041·Android开发:如何实现TCP和UDP传输 http:/ ... -
android adb shell常用命令
2012-02-20 18:20 6899最进学到了adb工具的一些小技巧,记录在此。操作系统是wind ... -
android取得json数据
2011-11-18 13:04 1291步骤一:页面返回JSON数据。 对本空间日志“php和AJA ...
相关推荐
通过这个类,我们可以读取、写入、更新和删除联系人信息。 添加联系人通常涉及以下几个步骤: 1. **请求权限**:在AndroidManifest.xml文件中,必须声明`READ_CONTACTS`和`WRITE_CONTACTS`权限,以便应用能够读写...
在Android系统中,动态添加联系人是一项常见的功能,它允许应用程序在运行时向用户的设备通讯录插入新的联系人信息。这个过程涉及到Android的Content Provider机制,权限管理,以及使用ContentResolver进行数据操作...
这个名为"Android代码-Android手机的通讯录联系人信息.zip"的压缩包可能包含了一个Android应用的源代码,该应用与读取、修改或管理手机上的通讯录联系人信息有关。下面将详细介绍Android平台中处理通讯录联系人信息...
本资料包“Android手机的通讯录联系人信息.zip”提供了Android应用开发的源码示例,帮助开发者深入理解如何在Android平台上操作和管理联系人数据。 首先,Android的通讯录功能是基于Content Provider构建的,...
我们可以遍历Cursor,将联系人信息展示在ListView中,或者执行其他操作。例如,获取联系人的姓名和电话号码: ```java while (cursor.moveToNext()) { String displayName = cursor.getString(cursor....
此外,UI设计方面,可以使用Android Studio提供的布局工具设计用户友好的界面,例如使用EditText用于输入联系人信息,Button用于执行添加、编辑和删除操作,ListView或RecyclerView用于显示联系人列表。同时,还可以...
更新联系人信息则使用`ContentResolver.update()`,同样需要提供URI、`ContentValues`和匹配条件。例如,若要更新某个联系人的电话号码,需提供联系人的ID和新的电话值。 5. **删除联系人**: 删除联系人使用`...
点击通讯录主界面选项菜单中的“添加联系人”菜单项,进入添加联系人界面,输入联系人的基本信息,包括姓名、手机号码、家庭地址、单位名称、Email、QQ号这些信息,姓名和手机号码必须不为空,且唯一。点击通讯录中...
我们需要遍历Cursor来获取联系人信息。例如,读取联系人ID和姓名: ```java while (cursor.moveToNext()) { String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String name...
在Android系统中,管理通讯录包括添加联系人和删除联系人是常见的操作,尤其是在开发相关的应用程序时。在处理这些功能时,必须考虑到Android权限管理和不同版本间的差异性。以下是关于这个主题的详细知识点: 1. *...
在Android平台上,添加联系人到用户的通讯录是一项常见的任务,涉及到对系统API的深度理解和权限管理。本示例,"android增加联系人到通讯录",将指导我们如何实现这一功能。下面,我们将深入探讨这一过程涉及的关键...
通过这个API,开发者可以实现诸如读取联系人信息、添加新联系人、更新现有联系人、删除联系人以及管理联系人分组等一系列功能。在"Pro Android学习:联系人API"中,我们将深入探讨这些关键知识点。 首先,Android的...
添加联系人通常涉及到以下步骤: 1. 获取ContentResolver实例,它是应用程序与Content Provider交互的桥梁。 2. 构建ContactDataKind对象,这代表了联系人中的一个特定类型的数据,如电话号码、电子邮件地址等。 3. ...
更新联系人信息同样使用ContentValues,但需要先通过query()获取到要修改的联系人ID,然后用ContentResolver的update()方法进行更新。 6. **删除联系人**: 删除联系人可以通过ContentResolver的delete()方法,...
在Android系统中,联系人管理是一项重要的功能,它允许用户存储、查看和管理他们的联系人信息。为了实现这一功能,Android提供了一套广播机制,即联系人广播协议,用于监听和响应联系人数据的更改。本文将深入探讨...
添加联系人通常分为两个步骤:创建联系人数据和插入到数据库。首先,你需要构建一个`ContentValues`对象,填充联系人的相关信息,如姓名、电话、电子邮件等。例如: ```java ContentValues values = new ...
我们可以通过ContentResolver查询ContentProvider来获取联系人信息。以下是一个基本的查询示例: ```java ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(ContactsContract....
在Android开发中,联系人管理是一项基础且重要的功能,它涉及到对系统中用户联系人的读取、添加、修改和删除操作。本项目实战——"android_实战_联系人",旨在帮助开发者深入理解和掌握Android的ContentProvider机制...
主页面包含`对联系人信息增删改查`这四种功能:在添加联系人页面,输入联系人信息,若联系人在数据库中不存在则可以添加成功;在删除和修改用户页面,都可以通过姓名搜索到指定联系人的信息,然后对联系人进行删除...
这个“Android手机的通讯录联系人信息.rar”压缩包可能包含了一些关于如何管理和操作Android设备上通讯录的资料。在这里,我们将深入探讨Android手机的通讯录联系人信息的相关知识点。 1. **联系人数据存储**: - ...