获取手机通讯录联系人信息
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为空");
}
}
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为空");
}
}
相关文章推荐
- Android手机获取通讯录联系人信息及短信广播实现
- Android笔记--读取手机通讯录获取联系人信息
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- iOS开发之获取手机通讯录联系人信息<二>
- iOS开发之获取手机通讯录联系人信息<一>
- ios开发之获取手机通讯录中所有联系人的信息二
- 获取手机通讯录信息
- android 跳转到通讯录并获取展示到页面 及android联系人信息获取
- 获取通讯录联系人信息
- Phone---获取手机联系人信息
- Android软件开发获取通讯录联系人信息
- 安卓手机各种信息获取---(通讯录短信息通话记录)
- 安卓手机应用获取通讯录中的联系人
- ios中获取当前手机通讯录信息一、在工程中添加AddressBook.framework和AddressBookUI.framework
- 手机联系人信息获取(头像,电话,姓名)
- android学习笔记--如何获取手机联系人的信息
- Android软件开发之获取通讯录联系人信息
- IOS获取系统通讯录联系人信息
- 通过ContentResolver获取手机中的联系人信息