我在Android 2.3.3,API级别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
电话号码,电子邮件地址......?谢谢你的提示!
答案 0 :(得分:8)
请参阅联系合同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
}
}
}
}
看一下这个例子