我使用类似这样的函数: (从Activity类调用OnActivityResult函数:
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (Constants.REQ_CODE_PICK_CONTACT) :
if (resultCode == Activity.RESULT_OK) {
savePickedContact(data, this);
}
break;
}
}
public static void savePickedContact(Intent data, Activity from){
Uri contactData = data.getData();
Cursor contactCur = from.managedQuery(contactData, null, null, null, null);
if (contactCur.moveToFirst()) {
for(int i=0;i<contactCur.getColumnCount();i++){
String columnName = contactCur.getColumnName(i);
String value = contactCur.getString(i);
}
ContentResolver cr = from.getContentResolver();
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " =?",
new String[]{contactCur.getString(contactCur.getColumnIndex("_id"))},
ContactsContract.CommonDataKinds.Email.IS_PRIMARY + " DESC");
Boolean hasData = emailCur.moveToFirst();
while(hasData){
String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
hasData = emailCur.moveToNext();
}
GlobalData.pickedContact.put("email_addresses", emails);
emailCur.close();
Cursor phonesCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " =?",
new String[]{contactCur.getString(contactCur.getColumnIndex("_id"))},
ContactsContract.CommonDataKinds.Phone.IS_PRIMARY + " DESC");
hasData = phonesCur.moveToFirst();
while(hasData){
String phoneNumber = phonesCur.getString(phonesCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
hasData = phonesCur.moveToNext();
}
phonesCur.close();
Cursor eventCur = cr.query(Data.CONTENT_URI,
new String[]{ ContactsContract.CommonDataKinds.Event.DATA},
ContactsContract.CommonDataKinds.Event.CONTACT_ID + " =? AND " + ContactsContract.CommonDataKinds.Event.TYPE + " =" + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY +" AND "+ Data.MIMETYPE + " =?",
new String[]{contactCur.getString(contactCur.getColumnIndex("_id")), ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE},
null);
hasData = eventCur.moveToFirst();
if(hasData){
String birthday = "birthday", Utils.dbDateToDisplayDate(eventCur.getString(0));
}
Cursor structNameCur = cr.query(Data.CONTENT_URI,
new String[]{ ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME},
ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " =? AND " + Data.MIMETYPE + " =?",
new String[]{contactCur.getString(contactCur.getColumnIndex("_id")), ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE},
null);
hasData = structNameCur.moveToFirst();
if(hasData){
String givenName = structNameCur.getString(0);
String familyName = "family_name", structNameCur.getString(1);
}
structNameCur.close();
}
contactCur.close();
}
phoneCursor.getCount()是什么? – user370305