`
huangro
  • 浏览: 332486 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通过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然后再取得联系人电话号码, 而且号码可能不止一个.
分享到:
评论

相关推荐

    android中ContactsContract获取联系人的方法

    这篇博客文章《android中ContactsContract获取联系人的方法》深入探讨了如何使用这个API来有效地获取和操作Android设备上的联系人数据。 首先,我们需要理解`ContactsContract`类的结构。它定义了一系列的常量和Uri...

    火山一键获取所有联系人信息类.rar

    2. **ContactsContract类**:ContactsContract是一个抽象类,定义了各种常量和类,它们代表了联系人的不同部分,如名字、电话号码、电子邮件地址等。例如,ContactsContract.Contacts表用来存储联系人的基本信息,...

    Android 使用获取手机通讯录实现

    接下来,我们可以通过ContentResolver和ContactsContract类来获取通讯录数据。ContentResolver是Android系统提供的用于与内容提供者交互的接口,而ContactsContract是Android提供的用于访问联系人数据的类。以下代码...

    安卓通讯录联系人打电话归属地相关-Android导入导出txt通讯录工具.rar

    2. 获取联系人详情:对于每个ID,查询ContactsContract.CommonDataKinds.Phone表,获取电话号码、邮箱等详细信息。 3. 将数据写入TXT:将查询结果格式化为TXT文件的行,每一行代表一个联系人,包括姓名、电话号码等...

    获取手机通讯录的实战应用(含SIM卡中的联系人).zip

    5. **SIM卡联系人**:Android系统通常不会直接提供API来读取SIM卡上的联系人,但可以通过监听电话状态和SIM卡状态的改变,然后通过TelephonyManager类获取SIM卡信息。例如,当SIM卡状态改变时,可以调用`...

    安卓listview相关相关-具有系统通讯录的功能将手机系统联系人以listview显示点击进入查看联系人信息拨打电话以及编辑联系人.rar

    开发者可以通过`ContactsContract.Contacts`、`ContactsContract.CommonDataKinds.Phone`等常量来获取联系人名、电话号码等信息。 4. **点击事件处理**: - 当用户点击ListView中的某一项时,会触发`...

    android手机联系人

    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "新的电话号码"); resolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.LOOKUP_KEY + " = ? AND " + ...

    电话拨号器

    6. **电话服务(TelephonyManager)**:Android提供的系统服务,用于获取电话状态、拨打电话号码等。 7. **数字键盘(Dialpad)**:使用自定义View或者系统提供的`NumberPicker`来实现拨号盘,处理用户的点击事件,...

    ListView实现A-Z排序

    `getContactPhoneNumber()`是一个辅助方法,用于根据联系人ID获取其电话号码,这通常需要再次查询。 接下来,为了实现搜索过滤功能,我们可以添加一个EditText,监听其文本变化事件。每当用户输入时,更新ListView...

    安卓查询系统联系人并使用数据库(sqlite)记录查询记录

    系统联系人数据就是通过ContentResolver和ContactsContract类来获取的。例如,可以使用`ContentResolver.query()`方法,传入ContactsContract.CommonDataKinds.Phone.CONTENT_URI作为参数,来获取所有联系人的姓名和...

    android 通讯录

    例如,ContactsContract.Contacts类提供了获取所有联系人信息的方法,而ContactsContract.CommonDataKinds类包含了各种常见的联系人数据类型,如电话、电子邮件等。 在实际开发中,为了确保用户隐私,还需要遵循...

    仿微信监听通讯簿,添加联系人

    3. **获取通讯录数据**:在`updateContacts()`方法中,我们可以使用ContentResolver查询ContactsContract类提供的常量来获取通讯录数据。例如,查询所有电话号码: ```java String[] projection = {...

    Android Studio简易通讯录界面.rar

    2. **数据封装**:将从通讯录获取到的数据进行适当的封装,通常会创建一个自定义的Contact类,包含姓名、电话号码等字段,然后将查询结果映射到这个类的实例中,形成一个Contact对象列表。这一步骤便于后续的数据...

    安卓开发-获取手机联系人并按字母排序,且可根据字母右侧A~Z检索.zip

    - 使用ContentResolver的query()方法,传入ContactsContract.CommonDataKinds.Phone.CONTENT_URI来获取所有联系人的电话数据。 - 查询时,可以指定需要的列,例如DISPLAY_NAME(显示名)和PHONETIC_NAME(音译名)...

    android添加联系人

    values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "电话号码"); values.put(ContactsContract.CommonDataKinds.Email.DATA, "电子邮件"); ``` 3. **选择联系人数据集**:根据你的需求,你可能需要决定将...

    android实验12

    要写入联系人,我们需要使用`ContactsContract.RawContacts`表来创建新的联系人记录,并通过`ContactsContract.Data`表添加具体字段,如姓名、电话、电子邮件等。 三、创建联系人 1. 创建一个`ContentValues`对象...

    Android开源通讯录

    开发者可以通过ContentResolver查询`ContactsContract.Contacts`、`ContactsContract.CommonDataKinds.Phone`和`ContactsContract.CommonDataKinds.Email`等表来获取姓名、电话号码和电子邮件地址等信息。...

    Android4.4Telephony(Phone)

    在Android 4.4中,电话服务通过`Phone`接口暴露给上层应用,开发者可以注册监听器来获取电话状态更新,如来电、去电、通话结束等事件。 二、电话状态监听(Phone State Listening) Android 4.4提供`...

    Android获取通话时间实例分析

    `ContactProvider`主要负责管理联系人数据,包括姓名、电话号码等,而`TelephonyProvider`通常涉及到更深入的电话功能,如通话状态监听。在获取通话时间的场景中,我们通常会查询`Calls.CONTENT_URI`,这是`...

    Android开发各类简单功能小demo合集-eclipse版本

    开发者需要查询`ContactsContract.Contacts`表来获取联系人信息,如果需要获取具体联系人的电话和邮箱,还需要查询`ContactsContract.CommonDataKinds.Phone`和`ContactsContract.CommonDataKinds.Email`。...

Global site tag (gtag.js) - Google Analytics