2.0及以上要用
long id = cursor.getLong(cursor.getColumnIndex("_id"));
Cursor pcur = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="
+ Long.toString(id), null, null);
 
// 处理多个号码的情况
String phoneNumbers = "";
while (pcur.moveToNext()) {
String strPhoneNumber = pcur
.getString(pcur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if(phoneNumbers==null||phoneNumbers.trim().length()==0){
phoneNumbers += strPhoneNumber;
}else{
phoneNumbers += strPhoneNumber + ":";
}
}
pcur.close();

解决方案 »

  1.   

    provider好像必须有一个_id的字段,你可以用xxx as _id
      

  2.   

    listData = new ArrayList<Map<String, Object>>();
     
    // read contacts
    Cursor cur = getContentResolver().query(
    ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    startManagingCursor(cur);
     
    while (cur.moveToNext()) {
    Map<String, Object> mp = new HashMap<String, Object>();
     
    long id = cur.getLong(cur.getColumnIndex("_id"));
    Cursor pcur = getContentResolver().query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
    null,
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="
    + Long.toString(id), null, null);
     
    // 处理多个号码的情况
    String phoneNumbers = "";
    while (pcur.moveToNext()) {
    String strPhoneNumber = pcur
    .getString(pcur
    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    if(phoneNumbers==null||phoneNumbers.trim().length()==0){
    phoneNumbers += strPhoneNumber;
    }else{
    phoneNumbers += strPhoneNumber + ":";
    }
    }
    pcur.close();

    String name = cur.getString(cur.getColumnIndex("display_name"));
    mp.put(NAME, name);
    mp.put(NUMBER, phoneNumbers);
    mp.put("check", "0");
    listData.add(mp);
    }
    cur.close();