当前位置: 首页 > 编程笔记 >

Android编程实现通讯录中联系人的读取,查询,添加功能示例

南宫奇思
2023-03-14
本文向大家介绍Android编程实现通讯录中联系人的读取,查询,添加功能示例,包括了Android编程实现通讯录中联系人的读取,查询,添加功能示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能。分享给大家供大家参考,具体如下:

先加二个读和写权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

具体代码:

package com.eboy.test;
import java.util.ArrayList;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.test.AndroidTestCase;
import android.util.Log;
public class ContectTest extends AndroidTestCase {
  private static final String TAG = "TestContact";
  //查询所有联系人的姓名,电话,邮箱
  public void TestContact() throws Exception {
    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 contractID = cursor.getInt(0);
      StringBuilder sb = new StringBuilder("contractID=");
      sb.append(contractID);
      uri = Uri.parse("content://com.android.contacts/contacts/" + contractID + "/data");
      Cursor cursor1 = resolver.query(uri, new String[]{"mimetype", "data1", "data2"}, null, null, null);
      while (cursor1.moveToNext()) {
        String data1 = cursor1.getString(cursor1.getColumnIndex("data1"));
        String mimeType = cursor1.getString(cursor1.getColumnIndex("mimetype"));
        if ("vnd.android.cursor.item/name".equals(mimeType)) { //是姓名
          sb.append(",name=" + data1);
        } else if ("vnd.android.cursor.item/email_v2".equals(mimeType)) { //邮箱
          sb.append(",email=" + data1);
        } else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)) { //手机
          sb.append(",phone=" + data1);
        }
      }
      cursor1.close();
      Log.i(TAG, sb.toString());
    }
    cursor.close();
  }
  //查询指定电话的联系人姓名,邮箱
  public void testContactNameByNumber() throws Exception {
    String number = "18052369652";
    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);
    }
    cursor.close();
  }
  //添加联系人,使用事务
  public void testAddContact() throws Exception {
    Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    ContentResolver resolver = getContext().getContentResolver();
    ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
    ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri)
      .withValue("account_name", null)
      .build();
    operations.add(op1);
    uri = Uri.parse("content://com.android.contacts/data");
    ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri)
      .withValueBackReference("raw_contact_id", 0)
      .withValue("mimetype", "vnd.android.cursor.item/name")
      .withValue("data2", "龚小永")
      .build();
    operations.add(op2);
    ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri)
      .withValueBackReference("raw_contact_id", 0)
      .withValue("mimetype", "vnd.android.cursor.item/phone_v2")
      .withValue("data1", "13539777967")
      .withValue("data2", "2")
      .build();
    operations.add(op3);
    ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri)
    .withValueBackReference("raw_contact_id", 0)
    .withValue("mimetype", "vnd.android.cursor.item/email_v2")
    .withValue("data1", "asdfasfad@163.com")
    .withValue("data2", "2")
    .build();
  operations.add(op4);
    resolver.applyBatch("com.android.contacts", operations);
  }
}

完整实例代码点击此处本站下载

希望本文所述对大家Android程序设计有所帮助。

 类似资料:
  • 本文向大家介绍基于aotu.js实现微信自动添加通讯录中的联系人功能,包括了基于aotu.js实现微信自动添加通讯录中的联系人功能的使用技巧和注意事项,需要的朋友参考一下 什么是Auto.JS? Auto.JS是Android平台上的JavaScript自动化工具。 它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启“无障碍模式”的情况下对其他App进行一些操作的一个Andr

  • 本文向大家介绍Android实现通讯录功能,包括了Android实现通讯录功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android通讯录案例,供大家参考,具体内容如下 实战演练——通讯录 1、功能描述:通过SQLite实现数据库的增删改查 2、技术要点:SQLite的基本操作 3、实现步骤: ① 创建一个类继承SQLiteOpenHelper ② 重写父类构造方法、onCr

  • 本文向大家介绍Android使用AsyncQueryHandler实现获取手机联系人功能,包括了Android使用AsyncQueryHandler实现获取手机联系人功能的使用技巧和注意事项,需要的朋友参考一下 利用AsyncQueryHandler能异步任务获取手机联系人,增加用户体验,使用起来也很方便。不多说,上干货。 布局文件main.xml contact.java 联系人bean文件 M

  • 本文向大家介绍Python编写通讯录通过数据库存储实现模糊查询功能,包括了Python编写通讯录通过数据库存储实现模糊查询功能的使用技巧和注意事项,需要的朋友参考一下 1.要求 数据库存储通讯录,要求按姓名/电话号码查询,查询条件只有一个输入入口,自动识别输入的是姓名还是号码,允许模糊查询。 2.实现功能 可通过输入指令进行操作。 (1)首先输入“add”,可以对通讯录进行添加联系人信息。 (2)

  • 本文向大家介绍Android编程实现分页加载ListView功能示例,包括了Android编程实现分页加载ListView功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程实现分页加载ListView功能。分享给大家供大家参考,具体如下: 我们第一个应该看见的就是声明了很多私有的变量,因为这样设置就可以变成只能自己来调用了,这样和其它的不发生冲突。其中我们设置了开始

  • 本文向大家介绍Android编程实现TCP、UDP客户端通信功能示例,包括了Android编程实现TCP、UDP客户端通信功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程实现TCP、UDP客户端通信功能。分享给大家供大家参考,具体如下: 在进行Android开发的过程中,免不了,要开发TCP/UDP通讯的程序,下面这两段代码,分别介绍了TCP/UCP通过的一个实例