1. 程式人生 > >獲取手機通訊錄聯絡人資訊

獲取手機通訊錄聯絡人資訊

// 獲取手機通訊錄
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();