通过ContactsContract类获取电话号码的改变

在2.0版本之前,获取通讯录中的联系人及其电话号码的方式如下:

String string = "";
super.onCreate(savedInstanceState);
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFieldColumnIndex);
int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
String number = cursor.getString(numberFieldColumnIndex);
string += (contact+":"+number+"\n");
}

但是在2.0及之后的版本中,获取联系人的方式不变,但是电话号码的方式发生改变, 具体代码如下:

String string = "";
super.onCreate(savedInstanceState);
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFieldColumnIndex);
string += contact + ":";
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactId, null, null);
while (phone.moveToNext())
{
int numberFieldColumnIndex = phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String strPhoneNumber = phone.getString(numberFieldColumnIndex);
string += " " + strPhoneNumber;
}
string += "\n";
phone.close();
}
cursor.close();


可见,在2.0之后的版本中要获取手机号码就只能通过先取得联系人ID然后再取得联系人电话号码, 而且号码可能不止一个.
获取手机联系人信息(姓名 电话号码) 手机的联系人信息,存放的位置分为两种。一种存放在手机内存里面,一种是存放在sim卡里面。 他们的访问方式都相似,都是把电话号码和联系人姓名是分开存放在数据库中的,只是访问的uri不同。 本文主要讲的是获取手机内存上的联系人信息。 联系人的姓名和电话号码是分开存放在sqlite数据库中的,我们把.db文件导出来,打开看看。 1.这是联系人信息: 2.电话号码信息: 表 阅读详情

相关推荐

cs188Inference in Bayes Nets(贝叶斯网络的推理)

cs188Inference in Bayes Nets贝叶斯网络的推理Question1(3 points):Bayes Net StructureQuestion2(1 points):Bayes Net ProbabilitiesQuestion 3(5 points):Join FactorsQuestion4(4 points):EliminateQuestion5(4 points):NormalizeQuestion 6(4 points):Variable EliminationQuesti

weixin_46582817的博客 1674

ContactsContract.Contacts与ContactsContract.CommonDataKinds.Phone的区别

ContactsContract.Contacts: Constants for the contacts table, which contains a record per aggregate of raw contacts representing the same person 常量的联系人表,其中包含一个记录每个联系人表示同一个人的集合。 Conta...

weixin_34198583的博客 913

STM32F4与LAN8720硬件连接避坑指南:从原理图到RMII信号完整性的实战解析

本文深入解析了STM32F4与LAN8720以太网连接的硬件设计要点与常见陷阱。重点剖析了电源上电时序、复位电路设计、RMII接口配置等关键环节,并提供了从原理图设计到PCB布局、信号完整性调试的完整实战指南,帮助硬件工程师规避设计风险,确保以太网通信的长期稳定运行。

weixin_29189003的博客 212

Android 获取联系人姓名和电话号码信息

ContactsContract 类是存储联系人相关信息的数据库。 几个需要用到的字段: ContactsContract.Contacts.DISPLAY_NAME 获取联系人名字 ContactsContract.Contacts.HAS_PHONE_NUMBER 是否有号码 ContactsContract.Contacts._ID 获取联系人ID(每个联系人名字会有一个唯一对应的ID) ...

weixin_43690475的博客 2820

Aloudata 荣登“数智技术系列榜单”和“数据智能服务商 TOP30”

持续助力各行业数智化先进企业突破数据管理技术瓶颈,以更加敏捷、精准和可靠的数据交付驱动企业业务创新与经营提效

Aloudata的博客 666

感应加热电源设计避坑指南:半桥LC串联谐振的5个关键问题

本文深入解析半桥LC串联谐振在感应加热电源设计中的5个关键问题,包括均压电阻选型、功率管驱动时序、谐振频率补偿等实战经验。通过真实故障案例和解决方案,帮助工程师避开常见设计陷阱,提升电路稳定性和效率,特别适合从事桥感应加热电源开发的工程师参考。

weixin_27013291的博客 510

ContactsContract获取联系人信息及双向查找联系人信息

添加权限:   <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>     try { /* 必须要有android.permission.READ_CONTACTS权限 */ Cursor cursor = managedQu...

电波小子,在沉默中反思 661

PCL点云算法与项目实战案例汇总(长期更新)

本专栏将深入探讨PCL(点云库)的基础算法,旨在帮助读者掌握点云处理的核心技术。内容涵盖点云的采样、过滤、配准、分割等基础操作,并结合实际案例,展示这些算法在工程中的应用。无论你是初学者还是有一定经验的开发者,都能通过本专栏加深对PCL的理解,提升在三维数据处理领域的技能。

纵马踏花向自由 3007

Android通讯录查询篇--ContactsContract.Data 二(续)

这次主要要做的就是根据姓名来查找电话,并且加强对通讯录的理解。   以前做一些用到数据库的东西的时候,可能光看代码也是不好联系起各个数据之间的关系,所以我先想到的还是数据库。幸运的是,它还真是一个数据库。   Android里面内置的是SQLite的数据库,虽然对数据库不怎么了解,但关系型数据库,基本操作也就那些,而且基本都一样,所以就直接用呗。 用命令行下的adb  shell进入Andr...

weixin_33910137的博客 1682

一文速学数模-K-means聚类算法实战:信用卡用户画像聚类分析

该项目算是非常经典的金融业务用户画像的基础分析了,主要根据用户信用卡使用行为数据进行分析,根据收集到的不同字段信息,对每个用户划分类别。这里需要说明一下的是,聚类模型只是将具有相似行为的大部分用户聚集到一个类别里面,这点并不会考虑到每个字段的含义,也就是分成的类别并不是用户价值等级,此类别仅仅是这个类别大体相同的信用卡用户行为对象,并不能给每个用户价值打上标签,那是评价模型做的事,这里要注意不要搞混淆了,用户价值评价是评价模型决定的,而画像是聚类模型分析的。

master_hunter的博客 1万+

详解FreeRTOS:事件标志组(高级篇—5)

事件组可以实现一对多,多对多的同步,即一个任务可以等待多个事件的发生。任务可以通过设置事件位来实现事件的触发和等待操作,FreeRTOS的事件仅用于同步,不提供数据传输功能。

不脱发的程序猿 1075

android关于调用联系人信息的问题

最近项目需要用到获取手机联系人的功能,百度了一下,写这篇文章不是为了充当大神,只是为了自己以后好直接拿来用,用句伟人的话“不要重复找轮子”。 1、首先添加权限 uses-permission android:name="android.permission.READ_CONTACTS"/> 2、 //得到ContentResolver对象 ContentResolve

Honour_HRH的博客 385

knowhere | 第一课:项目导论与环境搭建

摘要 本课程是Knowhere项目的第一课,重点介绍项目整体架构和开发环境搭建。Knowhere定位为AI Agent的文档记忆基础设施,通过解析多格式文档并保留结构化信息(如章节层级、表格语义等),为Agent提供可导航的文档知识。项目采用Python monorepo结构,核心包括: apps/api:FastAPI服务,处理HTTP请求和流程调用 apps/worker:Celery服务,执行文档解析等耗时任务 packages/shared-python:共享基础设施层 课程明确了各层职责边界,并推

weixin_43674738的博客 152

ContactsContract获取联系人信息

ContactsContract获取联系人信息 博客分类:  Android 一、 从Android 2.0 SDK开始有关联系人provider的类变成了ContactsContract,虽然老的android.provider.Contacts能用,但是在SDK中标记为为deprecated将被放弃不推荐的方法,而从Android 2.0及API Level为5开

夜空里荡秋千的女孩 1610

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android 联系人 以及 ContactsContract类 ,联系人column 'number' do not exist 原因

From:http://blog.sina.com.cn/s/blog_90cdca4c01010zm4.html 1.加入读写权限 联系人信息Uri: content://com.android.contacts/contacts 联系人电话Uri: content://com.android.contacts/data/phones 联系人Email Uri: conte

dongge825的专栏 5730

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

关于ContactsContract

靡不有初,鮮克有終。《詩經》 很多事情,绝大多数人都会在开始的时候满怀热情,而能坚持到底的却是寥寥无几。对待自己的目标,虎头蛇尾绝不可取,半途而废只会一无所成,我们必须持之以恒的做下去,坚持到底才能摘取胜利的果实。最近也忙了起来,忙着给自己充电,深知这项任务的艰巨,不是一天两天的事,所以也借用这句警言来告诫自己,坚持不懈的走下去。 今天我们来讲解一下如何利用ContentProvi

kyi_persisting的博客 2743

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android下ContactsContract类详解

在android4.0之后的版本,联系人的信息有ContactsContract这样一个类来管理。这个类的结构比较复杂,所以有必要分析一下。官方对ContactsContract的定义是:一个存储有联系人相关信息的可以扩展的数据库。该数据库的结构分为三层: 1、ConstractContact.data:该类可以存储任何数据,里面的每一项都指向一条raw contact(后面讲),通常是

李牙刷儿的专栏 6195

android中ContactsContract获取联系人的方法

从Android 2.0 SDK开始有关联系人provider的类变成了ContactsContract,虽然老的android.provider.Contacts能用,但是在SDK中标记为为deprecated将被放弃不推荐的方法,而从Android 2.0及API Level为5开始新增了android.provider.ContactsContract来代替原来的方法。 Contact...

zymic021635的博客 567

Android中联系人以及ContactsContract类

1.加入读写权限 (1).  (2).  联系人信息Uri: content://com.android.contacts/contacts 联系人电话Uri: content://com.android.contacts/data/phones 联系人Email Uri: content://com.android.contacts/data/emails (推荐)

supercube2的专栏 5494

Android2.0 中读取联系人——ContactsContract .转

from http://yarin.javaeye.com/blog/523849 当我们将Andorid1.5及其以前的项目放到Android2.0上时,如果代码中有 1 import android.provider.Contacts; Eclipse会提示“建议不使用”,那是因为在Android2.0中,联系人api发生了变化,需要使用Contac...

dongfang9140的博客 315

Android2.0 中读取联系人——ContactsContract

版权申明:http://yarin.iteye.com/blog/453262   当我们将Andorid1.5及其以前的项目放到Android2.0上时,如果代码中有 import android.provider.Contacts; Eclipse会提示“建议不使用”,那是因为在Android2.0中,联系人api发生了变化,需要使用ContactsContract。   直接看下...

Yarin's Blog™ 292

Android中 根据电话号码获取联系人姓名

以下是根据一个已知的电话号码,从通讯录中获取相对应的联系人姓名的代码: public String getContactNameFromPhoneBook(Context context, String phoneNum) { String contactName = ""; ContentResolver cr = context.getContentResolver(); Cu

Listening_music的专栏 1万+

Android 获取联系人和电话号码

获取联系人和电话号码 private void queryContactPhoneNumber() { String[] cols = {ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; Cursor cursor = getCo

神棍之路 7万+

Android应用开发笔记(2):读取手机中的联系人信息(android.provider.ContactsContract)

上一篇中使用了打电话发短信的功能,但号码联系人信息我们还不知道。本篇开始讲如何从Android中得到本机联系人的信息。 由于Android较快的版本升级,部分API已经发生了变化。本篇探究的通过ContentProvider机制获取联系人的API从Android2.0开始做了很大调整,原来的android.provider.Contacts类及其下相关类由android.provider.ContactsContract代替。原类体系标记为Deprecated(废弃),因为兼容的原因目前还存在,但不保证以

1万+
上一篇: Sun-java6
下一篇: Trac SQL Database API
pythoner
博客等级 码龄18年 15粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值