代码是这样:
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);String hisName = cursor.getString(nameFieldColumnIndex);
String hisNumber = cursor.getString(numberFieldColumnIndex);cursor.close();
问题就出在int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);返回过来的始终是-1,但是获取联系人名字的代码返回都是正常的,求救~~~~sdk是2.2的

解决方案 »

  1.   

    我用老版本的代码可以:
    Like this:
    Cursor cur = activity.getContentResolver().query(People.CONTENT_URI,
    null, null, null, null);
    while (cur.moveToNext())
    {
       int columnIndex = cur.getColumnIndex(People.NAME);
       String name = cur.getString(columnIndex);
       columnIndex = cur.getColumnIndex(People._ID);
       String id = cur.getString(columnIndex);
       // 其它的都差不多
    }
      

  2.   

    貌似二楼给的这个URI ContactsContract.CommonDataKinds.Phone.CONTENT_URI能正确获取
      

  3.   

    三楼的可以,已测过。一个联系人多个号码,用一个数组或者集合存放(可以把这些数据以类似spinner的方式供选择);