public static List<Contacts> getContacts() {
List<Contacts> contacts = new ArrayList<>();
ContentResolver resolver = MyApplication.getInstance().getContentResolver();
Cursor idCursor = resolver.query(
ContactsContract.Contacts.CONTENT_URI,
new String[]{android.provider.ContactsContract.Contacts._ID}, null, null, null);
while (idCursor.moveToNext()) { //空指针
Contacts contact = new Contacts();
//获取到raw_contacts表中的id
int id = idCursor.getInt(0);
String idstr = idCursor.getString(idCursor.getColumnIndex(android.provider.ContactsContract.Contacts._ID));
contact.setId(id);
//根据获取到的ID查询data表中的数据
//Uri uri = Uri.parse("content://com.android.contacts/contacts/" + id + "/data");
Cursor dataCursor = resolver.query(
android.provider.ContactsContract.Data.CONTENT_URI,
// new String[]{
// android.provider.ContactsContract.Data.DATA1,
// android.provider.ContactsContract.Data.MIMETYPE,
// android.provider.ContactsContract.Data.RAW_CONTACT_ID}
null,
android.provider.ContactsContract.Data.CONTACT_ID + "=" + idstr,
null, null);
while (dataCursor.moveToNext()) {
Log.i("rawid", "-------------\n");
String data = dataCursor.getString(dataCursor.getColumnIndex(android.provider.ContactsContract.Data.DATA1));
String mimetype = dataCursor.getString(
dataCursor.getColumnIndex(android.provider.ContactsContract.Data.MIMETYPE));
int rawid = dataCursor.getInt(2);
contact.setRawid(rawid);
Log.i("rawid", "某联系人下:" + rawid + "");
if (mimetype.contains("/name")) {
contact.setName(data);
}
if (mimetype.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) {
int phoneType = dataCursor.getInt(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
contact.getPhones().add(data);
//手机号
if (phoneType == ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) {
String mobile = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contact.setPhone(mobile);
}
//住宅
if (phoneType == ContactsContract.CommonDataKinds.Phone.TYPE_HOME) {
if (StringUtils.isEmpty(contact.getPhone())) {
String mobile = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contact.setPhone(mobile);
}
}
//单位
if (phoneType == ContactsContract.CommonDataKinds.Phone.TYPE_WORK) {
if (StringUtils.isEmpty(contact.getPhone())) {
String mobile = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contact.setPhone(mobile);
}
}
//其它
if (StringUtils.isEmpty(contact.getPhone())) {
//String mobile = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.number));
contact.setPhone(data);
}
}
if (mimetype.contains("/nickname")) {
contact.setNickname(data);
}
}
contacts.add(contact);
dataCursor.close();
}
idCursor.close();
return contacts;
}