while(c.moveToNext()){
       
       map = new HashMap<String, Object>();
       
       map.put("name", c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
       String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
       Log.v(tag, (i++) + " id = " + id);

       int isHas = Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
       //Log.v(tag, "isHas = " + isHas);
       if(isHas > 0){
       cc = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
       ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + id,null,null);
       Log.v(tag, "cc.getCount() = " + cc.getCount());
       while(cc.moveToNext()){
       int idIndexCC = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID);
       Log.v(tag, "id = " + cc.getString(idIndexCC));
       int numberIndex = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
       map.put("phone", cc.getString(numberIndex));
       Log.v(tag, "number= "+cc.getString(numberIndex));
       }
       cc.close();
      }
       list.add(map);
      }

解决方案 »

  1.   

     while(c.moveToNext()){
           
           map = new HashMap<String, Object>();
           
           map.put("name", c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
           String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
           Log.v(tag, (i++) + " id = " + id);
           int isHas = Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
           //Log.v(tag, "isHas = " + isHas);
           if(isHas > 0){
           cc = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + id,null,null);

           Log.v(tag, "cc.getCount() = " + cc.getCount());
           while(cc.moveToNext()){
           int idIndexCC = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID);
           Log.v(tag, "id = " + cc.getString(idIndexCC));
           int numberIndex = cc.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
           map.put("phone", cc.getString(numberIndex));
           Log.v(tag, "number= "+cc.getString(numberIndex));
           }
           cc.close();
          }
           list.add(map);
          }
      

  2.   

    刚刚写过这代码ContentResolver cr = getContentResolver();
    Uri uri = Uri.parse("content://com.android.contacts/contacts");
    Cursor cursor = cr.query(uri, null, null, null, null);
    while (cursor.moveToNext()) { PersonMsg pm = new PersonMsg();
    String name = cursor.getString(cursor
    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    String id = cursor.getString(cursor
    .getColumnIndex(ContactsContract.Contacts._ID));
    pm.name = name;
    pm.select = false;
    Cursor phoneCursor = cr.query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="
    + id, null, null); while (phoneCursor.moveToNext()) {
    String phone = phoneCursor
    .getString(phoneCursor
    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    pm.phone = phone;
    } myList.add(pm);
    phoneCursor.close();
    }
    cursor.close();
      

  3.   

    参考: Android 之往通讯录中添加数据和查询数据 
    http://blog.csdn.net/hosterZhu/archive/2011/01/20/6154461.aspx