Android编程实现通讯录中联系人的读取,查询,添加功能示例
发布时间 - 2026-01-11 02:14:52 点击率:次本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 通讯录
# 联系人
# 读取
# 查询
# 添加
# Android保存联系人到通讯录的方法
# android如何获取联系人所有信息
# Android ContentProvider实现获取手机联系人功能
# Android仿微信联系人列表字母侧滑控件
# Android实现获取联系人电话号码功能
# android利用ContentResolver访问者获取手机联系人信息
# Android跳转到系统联系人及拨号或短信界面
# Android获取手机联系人的方法
# 进阶
# 相关内容
# 感兴趣
# 给大家
# 点击此处
# 二个
# 更多关于
# 解决方法
# 所述
# 程序设计
# 讲述了
# String
# final
# static
# void
# TestContact
# TAG
# private
# Log
# AndroidTestCase
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何挑选最适合建站的高性能VPS主机?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
QQ浏览器网页版登录入口 个人中心在线进入
高防服务器:AI智能防御DDoS攻击与数据安全保障
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何彻底卸载建站之星软件?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
网站页面设计需要考虑到这些问题
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何在阿里云域名上完成建站全流程?
如何用AWS免费套餐快速搭建高效网站?
音乐网站服务器如何优化API响应速度?
用v-html解决Vue.js渲染中html标签不被解析的问题
打造顶配客厅影院,这份100寸电视推荐名单请查收
IOS倒计时设置UIButton标题title的抖动问题
浅谈Javascript中的Label语句
Laravel怎么使用artisan命令缓存配置和视图
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何快速搭建虚拟主机网站?新手必看指南
Android实现代码画虚线边框背景效果
如何快速完成中国万网建站详细流程?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何快速搭建自助建站会员专属系统?
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
如何登录建站主机?访问步骤全解析
Laravel观察者模式如何使用_Laravel Model Observer配置
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何在IIS中配置站点IP、端口及主机头?
如何在Windows服务器上快速搭建网站?
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
如何用免费手机建站系统零基础打造专业网站?
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
进行网站优化必须要坚持的四大原则
深圳网站制作平台,深圳市做网站好的公司有哪些?
JavaScript实现Fly Bird小游戏
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
实例解析Array和String方法
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
上一篇:ubuntu如何定时备份文件
上一篇:ubuntu如何定时备份文件

