2015-05-24 2 views
2

Я пытаюсь получить имя и номер контакта, используя идентификатор, хранящийся в базе данных, но курсор возвращает false при попытке cursor.moveToFirst(). Вот код -Невозможно получить имя и номер с помощью идентификатора контакта

Log.d(TAG, id); 
Cursor cursor = this.getContentResolver().query(
     ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
     null, 
     ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
     new String[]{id}, null); 
if(cursor == null){ 
    return; 
} 
while (cursor.moveToFirst()) 
{ 
    try{ 
     number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
    }catch (NullPointerException e){ 
     number = ""; 
    } 
    try{ 
     name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
    }catch (NullPointerException e){ 
     name = "No name"; 
    } 
} 
cursor.close(); 

Примечание - идентификаторы верны. Я проверил использование операторов журнала.

Выполнение сразу же переходит к cursor.close() после инициализации курсора. При отладке и проверке я обнаружил, что оператор while не работает, так как cursor.moveToFirst() возвращает false.

ответ

0

cursor.moveToFirst() возвращает false означает, что нет данных, совпадающих с ur . Для проверки конформации курсор.getCount() для проверки данных - , имеющий или нет.

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