`
skcceclipse
  • 浏览: 23341 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

PhoneLookup.NUMBER----ContactsContract类Android 2.0 API改变

阅读更多

转自:http://hi.baidu.com/coolcooldool/blog/item/93fadafdcac7a549d7887d60.html

原来要读取系统联系人的信息只要如下代码即可实现

   1. Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);  
   2. while(people.moveToNext())  
   3. {  
   4.      int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);  
   5.      String contact = people.getString(nameFieldColumnIndex);  
   6.      int numberFieldColumnIndex = people.getColumnIndex(PhoneLookup.NUMBER);       
   7.      String number = people.getString(numberFieldColumnIndex);  

   8. }  
   9. people.close(); 

其中红色加粗部分为获取系统联系人电话号码代码。但如果你使用的是2.0或2.0以上的API那么程序将提示出错。

在网上找找了找资料解决方法如下

   String string="";
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 strName = cursor.getString(nameFieldColumnIndex);
string += strName;
   string += ":";

String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); //获取联系人的ID号,在SQLite中的数据库ID
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " 
         + contactId, null, null);
 
while (phone.moveToNext())
{
       String strPhoneNumber = phone.getString(phone.getColumnIndex (ContactsContract.CommonDataKinds.Phone.NUMBER)); //手机号码字段联系人可能不止一个

         string +=   strPhoneNumber;
}

string += "\n";
phone.close();
   }
   cursor.close(); 

可以看到,获取名字的方法依然一样,但是要获取手机号码就只能通过先取得联系人ID然后再取得联系人手机号码了。

参考资料:http://www.3gmobi.com.cn/thread-53579-1-1.html

http://jituo666.blog.163.com/blog/static/294817212009111033940897/

 

分享到:
评论

相关推荐

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

    在Android 2.0及更高版本中,由于SDK对联系人数据的访问方式进行了更新,开发者需要使用新的API来读取和操作联系人信息。本文将详细介绍如何使用`ContactsContract`类来实现这一功能。 在Android 2.0之前,开发人员...

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

    在旧版本中,我们通常会使用`android.provider.Contacts`和`android.provider.Contacts.People`类来获取联系人数据,但在Android 2.0中,推荐使用`android.provider.ContactsContract`类。这是因为`ContactsContract...

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

    Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)); Cursor contactCursor = resolver.query(contactUri, new String[]{ContactsContract....

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

    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "13800138000"); values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); ``` 然后,使用`...

    获取通话记录

    在Android平台上,获取通话记录是一项常见的功能,通常用于开发通话管理类应用。本文将深入探讨如何在Android系统中读取通话记录,并将其显示为包含姓名、通话日期和通话时长的列表。 首先,我们需要理解Android的...

    package com.example.f1_telephone;

    import android.provider.ContactsContract.PhoneLookup; import android.database.Cursor; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener...

    training-appium-java-example:训练器

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

    android 读取电话号码

    `ContactsContract`是一个包含各种静态内部类的类,用于访问联系人信息。其中`ContactsContract.Contacts`用于获取联系人列表,而`ContactsContract.CommonDataKinds.Phone`则用于获取具体的电话号码信息。 ##### ...

    安卓读取手机短信代码

    这涉及到使用ContactsContract类来查询联系人信息。首先,根据电话号码获取联系人ID,然后用这个ID查询联系人名: ```java Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_...

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

    如果我们要同时获取SIM卡上的联系人,可以使用`ContactsContract.PhoneLookup`类的URI,并指定`Phone.TYPE`为`Phone.TYPE_SIM`: ```java Uri simContactsUri = Uri.withAppendedPath(ContactsContract.PhoneLookup...

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

    # npm install phonelookup 用法示例 验证电话并获取信息 var Phone = require('phonelookup'); // valid phone types by default: ['generalDesc', 'fixedLine', 'mobile', 'personalNumber', 'tollFree', '...

Global site tag (gtag.js) - Google Analytics