核心代码如下:
/**
* @param context
* 当前Activity
* @return
*/
public static List<KingdomContact> getAllContact(Context context) {
List<KingdomContact> list = new ArrayList<KingdomContact>();
Cursor cursor = context.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
Log.v("cursor.size", "" + cursor.getCount());
while (cursor.moveToNext()) {
//KingdomContact kingdomContact = new KingdomContact();
int nameFieldColumnIndex = cursor
.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFieldColumnIndex);
String emailAddr = "";
String contactId = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
Cursor emailCur = context.getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "
+ contactId, null, null);
emailCur.getColumnCount();
while ( emailCur.moveToNext() ) {
KingdomContact kingdomContact = new KingdomContact();
// This would allow you get several email addresses
// if the email addresses were stored in an array
emailAddr = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String emailType = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
if( emailAddr != "" || emailAddr != null ) {
kingdomContact.setName(contact);
kingdomContact.setEmailAddr(emailAddr);
}
list.add(kingdomContact);
Log.v("getAllContact email", "" + kingdomContact.getEmailAddr());
}
// if (emails.moveToNext()) {
// emailAddr = emails
// .getString(emails
// .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));// ContactsContract.CommonDataKinds.CommonDataColumns.DATA
// }
emailCur.close();
// kingdomContact.setName(contact);
// kingdomContact.setEmailAddr(emailAddr);
// list.add(kingdomContact);
// Log.v("getAllContact email", "" + kingdomContact.getEmailAddr());
}
cursor.close();
return list;
}
mKingdomContactList = KingdomContactUtil.getAllContact(this);
JSONArray jsonArray = new JSONArray();try {
for (int i = 0; i < mKingdomContactList.size(); i++) {
JSONObject jsonObj1 = new JSONObject();
mKingdomContact = mKingdomContactList.get(i);
if( mKingdomContact.getEmailAddr()!= "" ) {
jsonObj1.put("name", mKingdomContact.getName());
jsonObj1.put("email", mKingdomContact.getEmailAddr());
mJson = jsonArray.put(jsonObj1).toString();
}
}
if(DEBUG)Log.v(TAG, "mJson=" + mJson);
} catch (JSONException e) {
e.printStackTrace();
}