读取所有联系人数据

我在Android 2.3.3,API Level 10上。我想读取与它们相关的所有联系人和数据,例如所有的电子邮件地址,电话号码,自定义字段…我试过这样:

Uri contactUri = ContactsContract.Contacts.CONTENT_URI; Cursor contacts = managedQuery(contactUri, null, null, null, null ); contacts.moveToFirst(); do { for(int i=0;i<contacts.getColumnCount();i++) { System.out.println(contacts.getColumnName(i) + ": " + contacts.getString(i)); } System.out.println("============\n\n"); } while (contacts.moveToNext()); contacts.close(); 

但是,这只给了我以下领域:

 times_contacted: 0 contact_status: null custom_ringtone: null has_phone_number: 1 phonetic_name: null phonetic_name_style: 0 contact_status_label: null lookup: [removed] contact_status_icon: null last_time_contacted: 0 display_name: [removed] sort_key_alt: [removed] in_visible_group: 1 _id: 101 starred: 0 sort_key: [removed] display_name_alt: [removed] contact_presence: null display_name_source: 40 contact_status_res_package: null contact_chat_capability: null contact_status_ts: null photo_id: null send_to_voicemail: 0 

电话号码,电子邮件地址在哪里? 感谢任何提示!

Solutions Collecting From Web of "读取所有联系人数据"

请参阅联系合同API示例

http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/

 ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); if (cur.getCount() > 0) { while (cur.moveToNext()) { String id = cur.getString( cur.getColumnIndex(ContactsContract.Contacts._ID)); String name = cur.getString( cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { //Query phone here. Covered next } } } } 

看看这个例子

http://code.google.com/p/android-contacts-contract-example/