`

通过PhoneLookup读取所有电话号码

 
阅读更多

来自:http://www.cnblogs.com/over140/archive/2011/06/29/2091541.html

 

前言

  读取Android系统的通讯录时一般会先读取联系人然后再读取其号码,嵌套循环读取。如果通讯录人数不多速度尚可,但是通讯录里有1-2百人恐怕就比较慢了,如果硬件再差点体验就更差了。可以使用

ContactsContract.CommonDataKinds.Phone.CONTENT_URI(对应contacts2.db的数据视图view_data_restricted)视图来读取避免嵌套读取,而对于PhoneLookup.CONTENT_FILTER_URI确不能直接使用,这里分享一下小技巧。

 

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com

    农民伯伯: http://over140.cnblogs.com

 

正文

  一、PhoneLookup.CONTENT_FILTER_URI的一般用法

 Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
 resolver.query(uri, 
new String[]{PhoneLookup.DISPLAY_NAME,...

    API见这里。如果直接如下使用PhoneLookup.CONTENT_FILTER_URI会报IllegalArgument Exception错

getContentResolver().query(PhoneLookup.CONTENT_FILTER_URI,...

 

  二、 技巧用法

        Cursor c = getContentResolver().query(Uri.withAppendedPath(
                PhoneLookup.CONTENT_FILTER_URI, 
"*"), new String[] {
                PhoneLookup._ID,
                PhoneLookup.NUMBER,
                PhoneLookup.DISPLAY_NAME,
                PhoneLookup.TYPE, PhoneLookup.LABEL }, 
nullnull, sortOrder);

    关键是这个"*",这样就能取到所有的号码以及相关的联系人的姓名以及其他相关字段,比通过联系人再查找其号码要方便很多。

 

分享到:
评论

相关推荐

    android 读取电话号码

    ### Android读取电话号码知识点详解 #### 一、概述 在Android开发中,有时候我们需要让应用具有读取用户电话号码的功能,例如为了实现快速拨号、导入联系人等功能。根据提供的代码片段,我们可以看到这是一个简单...

    安卓读取手机短信代码

    首先,根据电话号码获取联系人ID,然后用这个ID查询联系人名: ```java Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(address)); Cursor contactCursor = ...

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

    正确的方法是首先获取到目标联系人的 `_ID`,然后通过这个ID来查询电话号码: ```java // 获取第一个联系人的_ID Cursor target = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, ...

    android获取短信并匹配姓名的几种方法

    查询结果会返回一个Cursor对象,通过遍历Cursor,我们可以获取每条短信的发件人电话号码(`cursor.getString(cursor.getColumnIndex("address"))`)和短信内容(`cursor.getString(cursor.getColumnIndex("body"))`...

    phonelookup:电话范围生成,每个国家_地区的验证以及对社交个人资料链接的查找

    基于电话验证和号码格式库 安装 # npm install phonelookup 用法示例 验证电话并获取信息 var Phone = require('phonelookup'); // valid phone types by default: ['generalDesc', 'fixedLine', 'mobile', '...

    Android+SDK+2.0中获取联系人信息.docx

    然而,直接通过`PhoneLookup.NUMBER`获取电话号码可能不会成功,因为这个字段可能不存在于查询结果中。正确的方式是首先找到目标联系人的 `_ID`,然后再通过这个ID查询对应的电话号码: ```java Cursor target = ...

    获取手机通讯录和sim卡通讯录并按字母排序

    // 使用一个电话号码作为示例 Cursor simCursor = resolver.query(simContactsUri, null, Phone.TYPE + "=?", new String[]{String.valueOf(Phone.TYPE_SIM)}, null); ``` 最后,为了展示这些联系人,你可以使用...

    获取通话记录

    对于姓名部分,`CallLog.Calls.CACHED_NAME`可能为空,这时需要通过电话号码查询联系人信息来获取姓名。可以使用`ContactsContract.CommonDataKinds.Phone`的ContentProvider来实现: ```java Uri contactUri = Uri...

    android 往通讯录中添加和删除联系人

    你可以通过联系人的电话号码或其他唯一标识来查询其ID。例如: ```java Uri lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode("13800138000")); Cursor cursor = ...

    package com.example.f1_telephone;

    //取得电话号码 String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ...

    training-appium-java-example:训练器

    将Android和iOS PhoneLookup应用程序都上传到deviceConnect购物车。 执行样本 要执行这些测试,您需要将deviceconnect.properties.default重命名为deviceconnect.properties。 重命名后,您需要填写以下信息: # ...

Global site tag (gtag.js) - Google Analytics