如何从电话的联系表中获取email?

我想从手机的联系列表中获取不同的电子邮件地址,比如工作,家庭住址等。我用的下面的代码,但是发现返回的结果是0。怎么回事啊?

Cursor email = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                Data.CONTACT_ID + " =" + id, null, null);
        while (email.moveToNext()) {
            emailAdd = email.getString(ContactsContract.CommonDataKinds.Email.TYPE_WORK);
            //ContactsContract.CommonDataKinds.Email.TYPE_HOME)
        }
        Log.v("anim", " emailAdd:    " + emailAdd);

我还需要获取群组,昵称,个人网站。

Cursor emailCur = cr.query( 
    ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
    null,
    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
    new String[]{id}, null); 
while (emailCur.moveToNext()) { 
    // This would allow you get several email addresses
        // if the email addresses were stored in an array
    String email = emailCur.getString(
                  emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
    String emailType = emailCur.getString(
                  emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
} 
emailCur.close();