Я пытаюсь получить имя и номер контакта, используя идентификатор, хранящийся в базе данных, но курсор возвращает 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.