public ArrayList<Email> getEmailAddresses(String id) { 
ArrayList<Email> emails = new ArrayList<Email>(); Cursor emailCur = this.cr.query( 
Contacts.ContactMethods.CONTENT_EMAIL_URI, 
null, 
Contacts.ContactMethods.PERSON_ID + " = ?", 
new String[]{id}, null); 
while (emailCur.moveToNext()) { 
    // This would allow you get several email addresses 
Email e = new Email(emailCur.getString(emailCur.getColumnIndex(Contacts.ContactMethods.DATA)) 
,emailCur.getString(emailCur.getColumnIndex(Contacts.ContactMethods.CONTENT_EMAIL_TYPE))  
); 
emails.add(e); 

emailCur.close(); 
return(emails); 
} public ArrayList<Address> getContactAddresses(String id) { 
ArrayList<Address> addrList = new ArrayList<Address>(); String where = Contacts.ContactMethods.PERSON_ID + " = ? AND " + Contacts.ContactMethods.KIND + " = ?"; 
String[] whereParameters = new String[]{id, 
Contacts.ContactMethods.CONTENT_POSTAL_ITEM_TYPE}; Cursor addrCur = this.cr.query(Contacts.ContactMethods.CONTENT_URI, null, where, whereParameters, null); 
while(addrCur.moveToNext()) { 
String addr = addrCur.getString(addrCur.getColumnIndex(Contacts.ContactMethodsColumns.DATA)); 
String type = addrCur.getString(addrCur.getColumnIndex(Contacts.ContactMethodsColumns.TYPE)); 
Address a = new Address(addr, type); 
addrList.add(a); 

addrCur.close(); 
return(addrList); 
http://jasonshieh.javaeye.com/blog/793543以上是1.6的,2.1把URl换成ContactsContract类的,楼主可以查查api文档
android2.0以后取得通讯录联系人使用的URI有所变化,改为ContactsContract类,以前的Contacts类已经不推荐使用了。

解决方案 »

  1.   

    2.1的URL
    联系人通信地址:ContactsContract.CommonDataKinds.StructuredPostal
    EMAIL:ContactsContract.CommonDataKinds.Event
      

  2.   

    首先真的很感谢你,我现在可以获取邮件地址之类的了,就是还是获取不到通信地址,
    我的代码是:public ArrayList<String> getContactAddresses(String id) {
    ArrayList<String> addrList = new ArrayList<String>();
    String addrWhere = Contacts.ContactMethods.PERSON_ID + " = ? AND "
    + Contacts.ContactMethods.KIND + " = ?";
    String[] addrWhereParams = new String[] { id,
    Contacts.ContactMethods.CONTENT_POSTAL_ITEM_TYPE }; Cursor addrCur = getContentResolver().query(
    Contacts.ContactMethods.CONTENT_URI, null, addrWhere,
    addrWhereParams, null);
    while (addrCur.moveToNext()) {
    String addr = addrCur.getString(addrCur
    .getColumnIndex(Contacts.ContactMethodsColumns.DATA));
    addrList.add(addr);
    }
    addrCur.close();
    return (addrList);
    }不知道什么原因啊。