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如何创建自定义Artisan命令?(代码示例)
如何在IIS管理器中快速创建并配置网站?
高防服务器如何保障网站安全无虞?
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
如何续费美橙建站之星域名及服务?
如何快速搭建FTP站点实现文件共享?
如何快速生成可下载的建站源码工具?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Android自定义listview布局实现上拉加载下拉刷新功能
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel如何发送系统通知?(Notification渠道示例)
高端建站三要素:定制模板、企业官网与响应式设计优化
JavaScript中的标签模板是什么_它如何扩展字符串功能
Laravel怎么调用外部API_Laravel Http Client客户端使用
如何快速上传建站程序避免常见错误?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Bootstrap CSS布局之列表
Laravel怎么实现模型属性的自动加密
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
常州企业网站制作公司,全国继续教育网怎么登录?
手机网站制作与建设方案,手机网站如何建设?
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Swift中循环语句中的转移语句 break 和 continue
中山网站制作网页,中山新生登记系统登记流程?
Laravel如何实现多对多模型关联?(Eloquent教程)
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
公司网站制作价格怎么算,公司办个官网需要多少钱?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Laravel怎么使用artisan命令缓存配置和视图
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何在建站之星网店版论坛获取技术支持?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
如何在云主机快速搭建网站站点?
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
javascript基本数据类型及类型检测常用方法小结
Python文本处理实践_日志清洗解析【指导】
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
南京网站制作费用,南京远驱官方网站?
如何用PHP快速搭建高效网站?分步指南
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】

