读取Android联系人时出错

读取Android联系人时出错,android,contacts,Android,Contacts,我从StackOverflow获得了以下片段: Cursor people = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null); try{ while (people.moveToNext()) { int nameFieldColumnIndex = people

我从StackOverflow获得了以下片段:

Cursor people = getContentResolver().query(
            ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

    try{
        while (people.moveToNext()) {
            int nameFieldColumnIndex = people
                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
            String contact = people.getString(nameFieldColumnIndex);
            int numberFieldColumnIndex = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            String number =  people.getString(numberFieldColumnIndex);

            System.out.println(contact + "-" + number);
        }
    }catch(Exception e){
        System.out.println(e);
    }
    people.close();
当我尝试读取
phoneNum
列时,我使用
stringnumber=people.getString(numberfieldcolumnidex)
得到一个错误。检查列索引时,我发现
numberFiledColonIndex=-1

如何使此代码段正常工作?

根据,当列不存在时,getColumnIndex()返回-1


问:您是否传递了正确的列名?拼写正确吗?

您的清单中有
吗?在
中,while(people.moveToNext()){
添加DatabaseUtils.dumpCurrentRow()以查看columnsGood问题-但听起来像是第一个getColumnIndex()(名称字段)正在工作。这意味着清单权限可能正常。IMHO…@user4769924-强烈建议:逐步完成调试器。检查实际数据库列字段的值;检查传递给getColumnIndex()的值的拼写。整个问题可能是输入错误。