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

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登