读书人

PhoneLookup.NUMBER-ContactsContract

发布时间: 2012-08-21 13:00:21 作者: rapoo

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/

?

读书人网 >Android

热点推荐