您的位置:首页 > 其它

获取手机通讯录联系人信息

2012-08-24 15:28 417 查看
// 获取手机通讯录

public void getPhoneContacts() {

mPhoneContactsList = new ArrayList<Map<String, Object>>();

String phoneNumber;

String displayAddress;

// 得到ContentResolver对象

ContentResolver cr = getContentResolver();

// 取得电话本中开始一项的光标

Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,

null, null, null);

// 向下移动一下光标

cursor.moveToFirst();

while (cursor.moveToNext()) {

Map<String, Object> map = new HashMap<String, Object>();

// 获得联系人的ID号

int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);

String contactId = cursor.getString(idColumn);

// 取得联系人名字

int nameFieldColumnIndex = cursor

.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

String disPlayName = cursor.getString(nameFieldColumnIndex);

// 取得电话号码

// 查看该联系人有多少个电话号码。如果没有这返回值为0

int phoneCount = cursor

.getInt(cursor

.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

if (phoneCount < 1) {

continue;

}

Cursor phones = getContentResolver().query(

ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

null,

ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "

+ contactId, null, null);

if (phones.moveToFirst()) {

do {

// 遍历所有的电话号码

phoneNumber = phones

.getString(phones

.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

int phoneType = phones

.getInt(phones

.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));

// if (phoneType ==

// ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) {

// break;

// }

map.put("phoneNumber", phoneNumber);

LogUtil.i(TAG, disPlayName + phoneNumber);

} while (phones.moveToNext());

}

phones.close();

// 查找email地址,这里email也可以有多个

Cursor emails = getContentResolver().query(

ContactsContract.CommonDataKinds.Email.CONTENT_URI,

null,

ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "

+ contactId, null, null);

while (emails.moveToNext()) {

String emailAddress = emails

.getString(emails

.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

map.put("emailAddress", emailAddress);

LogUtil.i(TAG, "emailAddress" + emailAddress + "");

}

emails.close();

// 获得联系人的地址

Cursor address = getContentResolver()

.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,

null,

ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID

+ " = " + contactId, null, null);

while (address.moveToNext()) {

// These are all private class variables, don’t forget to create

// them.

String poBox = address

//

.getString(address

.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));

String street = address

// 街道号,公寓

.getString(address

.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));

String city = address

// 城市

.getString(address

.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));

String state = address

// 省。县

.getString(address

.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));

String postalCode = address

// 邮编

.getString(address

.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));

String country = address

// 国家

.getString(address

.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));

String type = address

.getString(address

.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));

displayAddress = (country + city + street).toString();

map.put("displayAddress", displayAddress);

LogUtil.i(TAG, "address" + poBox + "/" + street + "/" + city

+ "/" + state + "/" + postalCode + "/" + country + "/"

+ type);

}

address.close();

map.put("disPlayName", disPlayName);

mPhoneContactsList.add(map);

}

cursor.close();

}

/**

* 获取SIM通讯录 content://icc/fdn content://sim/fdn MOTO XT800比较异常,通讯录在:

* content://contacts/phones

*/

public void getSIMContocts() {

mSIMContactsList = new ArrayList<Map<String, Object>>();

Uri uri = Uri.parse("content://contacts/phones");

LogUtil.i(TAG, "URI" + uri + "");

Cursor cursor = getContentResolver().query(

uri,

null,

null,

null,

ContactsContract.Contacts.DISPLAY_NAME

+ " COLLATE LOCALIZED ASC");

if (cursor != null) {

if (cursor.moveToFirst()) {

Map<String, Object> m = new HashMap<String, Object>();

do {

try {

int displayNameColumn = cursor.getColumnIndex("name");

int phoneColumn = cursor.getColumnIndex("number");

String displayName = cursor

.getString(displayNameColumn);

if (displayName == null) {

continue;

}

String phone = cursor.getString(phoneColumn);

if (phone == null) {

continue;

}

//

m.put("disPlayName", displayName);

m.put("phoneNumber", phone);

mSIMContactsList.add(m);

LogUtil.i(TAG, displayName + phone);

} catch (Exception e) {

e.printStackTrace();

}

} while (cursor.moveToNext());

}

} else {

LogUtil.i(TAG, "Cussor为空");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: