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为空");
}
}