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

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取