Android获取手机联系人的方法
发布时间 - 2026-01-11 03:16:59 点击率:次Android 获取系统联系人信息的实例

一、获取手机联系人姓名及手机号
//跳转到系统联系人应用
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
try {
startActivityForResult(intent, Contacts1RequestCode);
} catch (Exception e) {
LogManager.e("打开联系人信息失败");
}
添加权限申请
<uses-permission android:name="android.permission.READ_CONTACTS" />
选择联系人并返回
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (Contacts1RequestCode == requestCode) {// 取联系信息返回
if (resultCode == RESULT_OK) {
Uri contactData = data.getData();
Cursor cursor = getContentResolver().query(contactData, null,
null, null, null);
//Key联系人姓名,Value联系人手机号
Map<String, String> phoneMap = this.getContactPhone(cursor);
if (!cursor.isClosed()) {
cursor.close();
}
if (null != phoneMap && !phoneMap.isEmpty()) {
Set<String> keySet = phoneMap.keySet();
if (null != keySet && !keySet.isEmpty()) {
Object[] keys = keySet.toArray();
String phoneName = (String) keys[0];
String phoneNo = phoneMap.get(phoneName);
}
}
}
}
}
/**
* 获取联系人姓名及手机号
*
* @param cursor
* @return Key为联系人姓名,Value为联系人手机号
*/
private Map<String, String> getContactPhone(Cursor cursor) {
Map<String, String> resultMap = new HashMap<String, String>();
String phoneName = null;// 姓名
String mobilePhoneNo = null;// 手机号
if (null != cursor) {
cursor.moveToFirst();
// 获得联系人的ID号
int idFieldIndex = cursor
.getColumnIndex(ContactsContract.Contacts._ID);
String contactId = cursor.getString(idFieldIndex);
// 联系人姓名
int idphoneNameIndex = cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
phoneName = cursor.getString(idphoneNameIndex);
// 获得联系人的电话号码的cursor;
Cursor allPhones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?",
new String[] { contactId }, null);
// 所以联系电话(包话电话和手机号)
List<String> allPhoneNumList = new ArrayList<String>();
if (allPhones.moveToFirst()) {
// 遍历所有的电话号码
for (; !allPhones.isAfterLast(); allPhones.moveToNext()) {
int telNoTypeIndex = allPhones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
int telNoType = allPhones.getInt(telNoTypeIndex);
int telNoIndex = allPhones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String telNo = allPhones.getString(telNoIndex);
allPhoneNumList.add(telNo);
if (2 == telNoType) {// 手机号(原生态的SDK定义:mobile是2,home是1,work是3,other是7)
mobilePhoneNo = telNo;
break;
}
}
if (!allPhones.isClosed()) {
allPhones.close();
}
if (null == mobilePhoneNo) {// 没有存贮手机号
if (!allPhoneNumList.isEmpty()) {// 存在其它号码
for (String tel : allPhoneNumList) {
if (VerifyKit.isLegal(FormatType.MobilePhone, tel)) {// 取属于手机号格式
mobilePhoneNo = tel;
break;
}
}
}
}
}
if (!cursor.isClosed()) {
cursor.close();
}
resultMap.put(phoneName, mobilePhoneNo);
}
return resultMap;
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# 获取手机联系人
# 手机联系人获取的实现方法
# Android保存联系人到通讯录的方法
# android如何获取联系人所有信息
# Android ContentProvider实现获取手机联系人功能
# Android编程实现通讯录中联系人的读取
# 查询
# 添加功能示例
# Android仿微信联系人列表字母侧滑控件
# Android实现获取联系人电话号码功能
# android利用ContentResolver访问者获取手机联系人信息
# Android跳转到系统联系人及拨号或短信界面
# 如有
# 遍历
# 希望能
# 谢谢大家
# 跳转到
# 疑问请
# 原生态
# Uri
# RESULT_OK
# Cursor
# contactData
# getData
# super
# requestCode
# int
# onActivityResult
# void
# data
# resultCode
# isClosed
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高端建站如何打造兼具美学与转化的品牌官网?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何注册花生壳免费域名并搭建个人网站?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何基于PHP生成高效IDC网络公司建站源码?
如何彻底删除建站之星生成的Banner?
Python文件异常处理策略_健壮性说明【指导】
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
如何快速搭建自助建站会员专属系统?
香港服务器选型指南:免备案配置与高效建站方案解析
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
香港服务器租用每月最低只需15元?
如何在万网ECS上快速搭建专属网站?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
如何快速搭建二级域名独立网站?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
C#如何调用原生C++ COM对象详解
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
IOS倒计时设置UIButton标题title的抖动问题
Internet Explorer官网直接进入 IE浏览器在线体验版网址
如何在Windows虚拟主机上快速搭建网站?
如何在阿里云虚拟服务器快速搭建网站?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
iOS正则表达式验证手机号、邮箱、身份证号等
C++时间戳转换成日期时间的步骤和示例代码
如何构建满足综合性能需求的优质建站方案?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何在万网主机上快速搭建网站?
教你用AI润色文章,让你的文字表达更专业
C语言设计一个闪闪的圣诞树
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
如何用搬瓦工VPS快速搭建个人网站?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
如何用低价快速搭建高质量网站?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
node.js报错:Cannot find module 'ejs'的解决办法
Laravel怎么上传文件_Laravel图片上传及存储配置
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
轻松掌握MySQL函数中的last_insert_id()
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】

