首先给出实现完的界面图
上面是给出来的实现结果图。
从本地联系人中导出联系人,需要使用ContentProvider来获取通讯录中的联系人。
从通讯录中获取联系人方法如下:
/** 得到手机通讯录联系人信息 **/
private void getPhoneContacts() {
ContentResolver resolver = ContactsActivity.this.getContentResolver();
// 获取手机联系人
Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
// 查看联系人有多少个号码,如果没有号码,返回0
int idColumn = cursor
.getColumnIndex(ContactsContract.Contacts._ID);
int phoneCount = cursor
.getInt(cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
int displayNameColumn = cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
// 得到联系人名称
String contactName = cursor.getString(displayNameColumn);
// 获得联系人的ID
String contactId = cursor.getString(idColumn);
List<String> list = new ArrayList<String>();
if (phoneCount > 0) {
// 获得联系人的电话号码列表
Cursor phoneCursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ "=" + contactId, null, null);
if (phoneCursor.moveToFirst()) {
do {
// 遍历所有的联系人下面所有的电话号码
String phoneNumber = phoneCursor
.getString(phoneCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 去掉手机号中的空格和“-”
phoneNumber = phoneNumber.replace(" ", "")
.replace("-", "").replace("+86", "");
if (DataTools.isMobileNO(phoneNumber)) {
if (!list.contains(phoneNumber)) {
list.add(phoneNumber);
}
}
} while (phoneCursor.moveToNext());
}
phoneCursor.close();
}
// //得到手机号码
// String phoneNumber = cursor.getString(PHONES_NUMBER_INDEX);
// 当手机号码为空的或者为空字段 跳过当前循环
if (list.size() > 0) {
if (!maps.containsKey(contactId)) {// 所有联系人放到maps中,
ContactBean bean = new ContactBean();
bean.setContactName(contactName);
bean.setContactNum(list);
bean.setCheck(false);
maps.put(contactId, bean);
}
}
}
cursor.close();
}
if (maps.size() > 0) {// 有数据
handler.sendEmptyMessage(1);
} else {
handler.sendEmptyMessage(0);
}
}
实体ContactBean类
public class ContactBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String contactName;
private List<String> contactNum;
private boolean isCheck;
private int positon = -1;
private String addr;
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
public List<String> getContactNum() {
return contactNum;
}
public void setContactNum(List<String> contactNum) {
this.contactNum = contactNum;
}
public boolean isCheck() {
return isCheck;
}
public void setCheck(boolean isCheck) {
this.isCheck = isCheck;
}
public int getPositon() {
return positon;
}
public void setPositon(int positon) {
this.positon = positon;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
// 联系人一对一
private HashMap<String, ContactBean