博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android访问通讯录和添加联系人
阅读量:7098 次
发布时间:2019-06-28

本文共 6903 字,大约阅读时间需要 23 分钟。

package com.example.test;            import java.util.ArrayList;            import android.content.ContentProviderOperation;      import android.content.ContentResolver;      import android.content.ContentUris;      import android.content.ContentValues;      import android.database.Cursor;      import android.net.Uri;      import android.test.AndroidTestCase;      import android.util.Log;            public class ContactsTest extends AndroidTestCase {          private static final String TAG = "ContactsTest";                /**          * 获取联系人          * */          public void testGetContacts(){              Uri uri = Uri.parse("content://com.android.contacts/contacts"); // 访问所有联系人              ContentResolver resolver = getContext().getContentResolver();              Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, null);              while(cursor.moveToNext()){                  int contactsId = cursor.getInt(0);                  StringBuilder sb = new StringBuilder("contactsId=");                  sb.append(contactsId);                  uri = Uri.parse("content://com.android.contacts/contacts/" + contactsId + "/data"); //某个联系人下面的所有数据                  Cursor dataCursor = resolver.query(uri, new String[]{"mimetype", "data1", "data2"}, null, null, null);                  while(dataCursor.moveToNext()){                      String data = dataCursor.getString(dataCursor.getColumnIndex("data1"));                      String type = dataCursor.getString(dataCursor.getColumnIndex("mimetype"));                      if("vnd.android.cursor.item/name".equals(type)){    // 如果他的mimetype类型是name                          sb.append(", name=" + data);                      } else if("vnd.android.cursor.item/email_v2".equals(type)){ // 如果他的mimetype类型是email                          sb.append(", email=" + data);                      } else if("vnd.android.cursor.item/phone_v2".equals(type)){ // 如果他的mimetype类型是phone                          sb.append(", phone=" + data);                      }                   }                  Log.i(TAG, sb.toString());              }          }                    /**          * 根据来电号码获取联系人名字          * */          public void testGetContactsByNumber(){              String number = "15292328801";              Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + number);              ContentResolver resolver = getContext().getContentResolver();              Cursor cursor = resolver.query(uri, new String[]{"display_name"}, null, null, null);              if(cursor.moveToFirst()){                  String name = cursor.getString(0);                  Log.i(TAG, name);              }          }                    /**          * 添加联系人          * 数据一个表一个表的添加,每次都调用insert方法          * */          public void testAddContacts(){              /* 往 raw_contacts 中添加数据,并获取添加的id号*/              Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");              ContentResolver resolver = getContext().getContentResolver();              ContentValues values = new ContentValues();              long contactId = ContentUris.parseId(resolver.insert(uri, values));                            /* 往 data 中添加数据(要根据前面获取的id号) */              // 添加姓名              uri = Uri.parse("content://com.android.contacts/data");              values.put("raw_contact_id", contactId);              values.put("mimetype", "vnd.android.cursor.item/name");              values.put("data2", "周国平");              resolver.insert(uri, values);                            // 添加电话              values.clear();              values.put("raw_contact_id", contactId);              values.put("mimetype", "vnd.android.cursor.item/phone_v2");              values.put("data2", "2");              values.put("data1", "15099144117");              resolver.insert(uri, values);                            // 添加Email              values.clear();              values.put("raw_contact_id", contactId);              values.put("mimetype", "vnd.android.cursor.item/email_v2");              values.put("data2", "2");              values.put("data1", "zhouguoping@qq.com");              resolver.insert(uri, values);          }                    /**          * 添加联系人          * 在同一个事务中完成联系人各项数据的添加          * 使用ArrayList
,把每步操作放在它的对象中执行 * */ public void testAddContacts2(){ Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = getContext().getContentResolver(); // 第一个参数:内容提供者的主机名 // 第二个参数:要执行的操作 ArrayList
operations = new ArrayList
(); // 操作1.添加Google账号,这里值为null,表示不添加 ContentProviderOperation operation = ContentProviderOperation.newInsert(uri) .withValue("account_name", null)// account_name:Google账号 .build(); // 操作2.添加data表中name字段 uri = Uri.parse("content://com.android.contacts/data"); ContentProviderOperation operation2 = ContentProviderOperation.newInsert(uri) // 第二个参数int previousResult:表示上一个操作的位于operations的第0个索引, // 所以能够将上一个操作返回的raw_contact_id作为该方法的参数 .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/name") .withValue("data2", "周国平") .build(); // 操作3.添加data表中phone字段 uri = Uri.parse("content://com.android.contacts/data"); ContentProviderOperation operation3 = ContentProviderOperation.newInsert(uri) .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/phone_v2") .withValue("data2", "2") .withValue("data1", "15099144117") .build(); // 操作4.添加data表中的Email字段 uri = Uri.parse("content://com.android.contacts/data"); ContentProviderOperation operation4 = ContentProviderOperation .newInsert(uri).withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/email_v2") .withValue("data2", "2") .withValue("data1", "zhouguoping@qq.com").build(); operations.add(operation); operations.add(operation2); operations.add(operation3); operations.add(operation4); try { resolver.applyBatch("com.android.contacts", operations); } catch (Exception e) { e.printStackTrace(); } } }

转载于:https://www.cnblogs.com/chaoyu/p/6437015.html

你可能感兴趣的文章
jQuery初始化
查看>>
[转载]Linux内存高,触发oom-killer问题解决
查看>>
帮助小白快速理解多线程
查看>>
Android系统移植与驱动开发概述
查看>>
Codeforces 432D Prefixes and Suffixes kmp
查看>>
【poj解题】1028
查看>>
JS-JavaScript类库整理 [更新中...]
查看>>
SharePoint 2013中的默认爬网文件扩展名和分析文件类型
查看>>
Mysql的学习研究
查看>>
hdu——3861 The King’s Problem
查看>>
2. MariaDB激活二进制日志
查看>>
Android菜鸟的成长笔记(8)——Intent与Intent Filter(上)
查看>>
使用 Subversion 修改文件名称的大小写的方法
查看>>
JAVA 显示图片的简单源码 分类: Java Game ...
查看>>
Vuex 的使用
查看>>
使用ServiceStack构建Web服务
查看>>
vbox磁盘空间扩容
查看>>
java的IO操作
查看>>
PHP curl Post请求和Get请求~
查看>>
PostgreSQL 9.6.0 文档
查看>>