public List<Map<String, String>> getContacts() {
List<Map<String, String>> list;
Map<String, String> map = null;
Uri contactsUri = Uri
.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");
ContentResolver cr = getContentResolver();
Cursor contactIdCursor = cr.query(contactsUri,
new String[] { "contact_id" }, null, null, null);
list = new ArrayList<Map<String, String>>();
while (contactIdCursor.moveToNext()) {
map = new HashMap<String, String>();
String contactId = contactIdCursor.getString(contactIdCursor
.getColumnIndex("contact_id"));
System.out.println("id=" + contactId);
Cursor dataCursor = cr
.query(dataUri, new String[] { "mimetype", "data1" },
"contact_id=?", new String[] { contactId }, null);
while (dataCursor.moveToNext()) {
String mimetype = dataCursor.getString(dataCursor
.getColumnIndex("mimetype"));
String data1 = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
System.out.println("mimetype:" + mimetype + ",data1:" + data1);
if (mimetype.equals("vnd.android.cursor.item/phone_v2")) {
map.put("phone", data1);
}
if (mimetype.equals("vnd.android.cursor.item/name")) {
map.put("name", data1);
}
}
list.add(map);
dataCursor.close();
}
contactIdCursor.close();
return list;
}