while(c.moveToNext()){
map = new HashMap<String, Object>();
map.put("name", c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
Log.v(tag, (i++) + " id = " + id);
int isHas = Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
//Log.v(tag, "isHas = " + isHas);
if(isHas > 0){
cc = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + id,null,null);
Log.v(tag, "cc.getCount() = " + cc.getCount());
while(cc.moveToNext()){
int idIndexCC = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID);
Log.v(tag, "id = " + cc.getString(idIndexCC));
int numberIndex = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
map.put("phone", cc.getString(numberIndex));
Log.v(tag, "number= "+cc.getString(numberIndex));
}
cc.close();
}
list.add(map);
}
map = new HashMap<String, Object>();
map.put("name", c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
Log.v(tag, (i++) + " id = " + id);
int isHas = Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
//Log.v(tag, "isHas = " + isHas);
if(isHas > 0){
cc = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + id,null,null);
Log.v(tag, "cc.getCount() = " + cc.getCount());
while(cc.moveToNext()){
int idIndexCC = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID);
Log.v(tag, "id = " + cc.getString(idIndexCC));
int numberIndex = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
map.put("phone", cc.getString(numberIndex));
Log.v(tag, "number= "+cc.getString(numberIndex));
}
cc.close();
}
list.add(map);
}
map = new HashMap<String, Object>();
map.put("name", c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
Log.v(tag, (i++) + " id = " + id);
int isHas = Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
//Log.v(tag, "isHas = " + isHas);
if(isHas > 0){
cc = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + id,null,null);
Log.v(tag, "cc.getCount() = " + cc.getCount());
while(cc.moveToNext()){
int idIndexCC = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID);
Log.v(tag, "id = " + cc.getString(idIndexCC));
int numberIndex = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
map.put("phone", cc.getString(numberIndex));
Log.v(tag, "number= "+cc.getString(numberIndex));
}
cc.close();
}
list.add(map);
}
Uri uri = Uri.parse("content://com.android.contacts/contacts");
Cursor cursor = cr.query(uri, null, null, null, null);
while (cursor.moveToNext()) { PersonMsg pm = new PersonMsg();
String name = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String id = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
pm.name = name;
pm.select = false;
Cursor phoneCursor = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="
+ id, null, null); while (phoneCursor.moveToNext()) {
String phone = phoneCursor
.getString(phoneCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
pm.phone = phone;
} myList.add(pm);
phoneCursor.close();
}
cursor.close();
http://blog.csdn.net/hosterZhu/archive/2011/01/20/6154461.aspx