Android 之获取本地联系人

2024-06-11 15:18

本文主要是介绍Android 之获取本地联系人,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

android 之系统本地获悉系统联系人


首先:我们需要知道,我们获取联系人需要知道一些什么知识点。
知识点盲区扫描:
1.android系统联系人表结构
2.内容提供者也就是content provide
3.利用内容提供者和查询数据表内容得到数据


(一)系统联系人表结构
1.raw_contacts 表:保存联系人的id  contact_id 存入联系人id
2.data表,保存联系人数据, data1 存放数据 mimetype 存放数据类型 raw_contact_id 保存数据属于哪个联系人
3.mimetypes 表:保存数据类型 1.email 5.phone 7.name等等。



需求:查询所有的联系人信息
实现步骤
1.查询raw_contacts表,把所有的联系人id取出来
2.根据id查询data表,把这个id对应的数据取出来
3.根据数据的类型,查询mimetypes表,获取数据的业务类型



(二)具体实现
1.记住添加权限: <uses-permission android:name="android.permission.READ_CONTACTS" />
2.布局文件中随便写一个Button控件,然后设置监听事件
3.监听事件中写入以下方法即可:
private void getContacts() {
// 1.获取内容提供者中的 ContentResolver
ContentResolver resolver = getContentResolver();

// 2.拿到raw_contact表的uri
Uri contacts_uri = Uri.parse("content://com.android.contacts/raw_contacts");
// 2.拿到data表的uri
Uri data_uri = Uri.parse("content://com.android.contacts/data");

// 3.根据uri获取数据库内容的下标
Cursor cursor = resolver.query(contacts_uri, null, null, null, null);
while (cursor.moveToNext()) {
// 获取raw_contact表的id
String id = cursor.getString(cursor.getColumnIndex("contact_id"));
Log.v("id", "contacts_id = " + id);

// 获取data表的下标  注意:data表是根据raw_contact表的id获取
Cursor dataCursor = resolver.query(data_uri, null, "raw_contact_id=?",
new String[] { id }, null);
while (dataCursor.moveToNext()) {
String data1 = dataCur.getString(dataCur
.getColumnIndex("data1"));
String mimetype = dataCur.getString(dataCur
.getColumnIndex("mimetype"));
Log.v("data1", "data1 = " + data1);
Log.v("mimetype", "mimetype = " + mimetype);
}
dataCur.close();
}
}


然后去log中看消息,即可看到联系的人一些数据,看起来是不是很简单,去实践一下吧,




这篇关于Android 之获取本地联系人的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051538

相关文章

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过