2015-04-11 2 views
2

Я получил этот отрывок из StackOverflow:Ошибка при чтении Android контактов

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 столбец Я получаю сообщение об ошибке с помощью String number = people.getString(numberFieldColumnIndex). Проверяя индекс столбца, я обнаружил, что numberFiledColomnIndex = -1.

Как я могу получить этот сниппет?

+0

У вас есть '' в вашем манифесте? – Nija

+0

inside 'while (people.moveToNext()) {' add DatabaseUtils.dumpCurrentRow(), чтобы видеть столбцы – pskink

+0

Хороший вопрос - но похоже, что работает первое getColumnIndex() (поле имени). Это означало бы, что разрешения очевидцев, вероятно, в порядке. IMHO ... – FoggyDay

ответ

0

За documentation getColumnIndex() возвращает -1, когда столбец не существует.

Вопрос: Вы передаете правильное имя столбца? Правильно ли написано?

+0

@ user4769924 - Сильное предложение: пройдите через отладчик. Проверьте значения полей столбца фактической базы данных; проверьте написание значения, которое вы передаете, в getColumnIndex(). Вся проблема может быть опечаткой. – FoggyDay

Смежные вопросы