android 读取通讯录
来源:互联网 发布:新开淘宝店铺怎样做 编辑:程序博客网 时间:2024/05/21 19:45
ArrayList<ContactBean> arrayList = new ArrayList<ContactBean>();
phoneMap = new HashMap<String, Boolean>();
//获取本机联系人
Cursor cur = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
null,
null,
null,
ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC");
if (cur.moveToFirst()) {
do {
ContactBean samContact = new ContactBean();
samContact.setSelected(false);
int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
// 获得联系人的ID号
String contactId = cur.getString(idColumn);
// 获得联系人姓名
String disPlayName = cur.getString(displayNameColumn);
System.out.println(disPlayName);
samContact.contactName = disPlayName;
// 查看该联系人有多少个电话号码。如果没有这返回值为0
int phoneCount = cur.getInt(cur.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 != null && phones.moveToFirst()) {
do {
// 遍历所有的电话号码
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneNumber = phoneNumber.trim();
phoneNumber = phoneNumber.replaceAll(" ", "");
int phoneType = phones
.getInt(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
if (phoneType == ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) {
Boolean hasAddPhoneNumber = false;
hasAddPhoneNumber = phoneMap.get(phoneNumber);
if (hasAddPhoneNumber != null && hasAddPhoneNumber) {
break;
} else {
samContact.contactPhoneNumber = phoneNumber;
//设置选中
if (defaultSelectList != null) {
int count = defaultSelectList.size();
for (int kk = 0; kk < count; kk++) {
if (defaultSelectList.get(kk).getContactPhoneNumber().equals(samContact.getContactPhoneNumber())) {
samContact.setSelected(true);
break;
}
}
}
arrayList.add(samContact);
phoneMap.put(phoneNumber, true);
}
break;
}
} while (phones.moveToNext());
if (phones != null) {
phones.close();
}
}
} while (cur.moveToNext());
}
if (cur != null) {
cur.close();
}
//获取sim卡联系人
Uri uri = Uri.parse("content://icc/adn");
Cursor cur2 = getContentResolver().query(
uri,
null,
null,
null,
ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC");
// System.out.println("contact num from sim card = "+cur2.getCount());
// System.out.println("---------------");
if (cur2 != null && cur2.moveToFirst()) {
do {
try {
ContactBean samContact = new ContactBean();
samContact.setSelected(false);
int displayNameColumn = cur2.getColumnIndex(Contacts.People.NAME);
int phoneColumn = cur2.getColumnIndex(Contacts.People.NUMBER);
String phoneNumber = cur2.getString(phoneColumn);
phoneNumber = phoneNumber.trim();
phoneNumber = phoneNumber.replaceAll(" ", "");
samContact.contactName = cur2.getString(displayNameColumn);
if (samContact.contactName == null) {
continue;
}
samContact.contactPhoneNumber = phoneNumber;
if (samContact.contactPhoneNumber == null) {
continue;
}
Boolean hasAddPhoneNumber = false;
hasAddPhoneNumber = phoneMap.get(samContact.contactPhoneNumber);
if (hasAddPhoneNumber != null && hasAddPhoneNumber) {
continue;
} else {
//设置选中
if (defaultSelectList != null) {
int count = defaultSelectList.size();
for (int kk = 0; kk < count; kk++) {
if (defaultSelectList.get(kk).getContactPhoneNumber().equals(samContact.getContactPhoneNumber())) {
samContact.setSelected(true);
break;
}
}
}
arrayList.add(samContact);
phoneMap.put(samContact.getContactPhoneNumber(), true);
}
arrayList.add(samContact);
} catch (Exception e) {
e.printStackTrace();
}
} while (cur2.moveToNext());
}
if (cur2 != null) {
cur2.close();
}
return arrayList;
}
public class ContactBean implements Parcelable {
public String contactName;
public String contactPhoneNumber;
private boolean isSelected;
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean selected) {
isSelected = selected;
}
public String getContactPhoneNumber() {
return contactPhoneNumber;
}
public void setContactPhoneNumber(String contactPhoneNumber) {
this.contactPhoneNumber = contactPhoneNumber;
}
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
int isChecked = isSelected?1:0;
parcel.writeInt(isChecked);
parcel.writeString(contactName);
parcel.writeString(contactPhoneNumber);
}
public static final Parcelable.Creator CREATOR = new Creator() {
@Override
public ContactBean createFromParcel(Parcel source) {
// TODO Auto-generated method stub
ContactBean parcelableObj = new ContactBean();
parcelableObj.isSelected=source.readInt()==1?true:false;
parcelableObj.contactName=source.readString();
parcelableObj.contactPhoneNumber = source.readString();
return parcelableObj;
}
@Override
public ContactBean[] newArray(int size) {
return new ContactBean[size];
}
};
}
- android读取手机通讯录
- android 读取通讯录
- Unity读取Android通讯录。
- Android读取通讯录联系人
- Android读取通讯录联系人
- android 读取手机通讯录
- Android读取通讯录信息
- android 读取系统通讯录
- android读取通讯录和写入通讯录
- 【android】:android实现读取通讯录
- Android读取手机通讯录实现
- Android 2.1读取手机通讯录
- Android读取手机通讯录实现
- Android 读取并显示通讯录
- android 通讯录读取优化加速
- Android读取手机通讯录实现
- android 通讯录读取与插入
- Android 读取手机通讯录内容
- 西哈努克在京逝世 中国领导人表示慰问-西哈努克-逝世-慰问
- Android4.0 4.1Keyguard锁屏流程梳理(转)
- ibatis sqlMap.xml 文件 like 查询的三种方案
- js 获取当前年月日时分秒星期
- 解决Jasperreport的web 套打
- android 读取通讯录
- oracle partition和subpartition
- 实现push默认动画
- WP User Frontend用户前端插件
- 风险敞口
- Xvfb+YSlow+ShowSlow搭建前端性能测试框架
- VC中无LIB时的DLL隐式链接,制作与VC++相符合的LIB函数符号输入库
- <input autocomplete="off" />属性
- malloc 和 mmap 的内存,到底哪个性能好?