无法使用联系人ID检索姓名和号码



我正在尝试使用数据库中存储的id检索联系人的姓名和号码,但是在尝试cursor.moveToFirst()时光标返回false。下面是代码-

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();

注意- id是正确的。我已经检查了使用日志语句。

初始化游标后直接跳转到cursor.close()。在调试和检查中,我发现while语句失败,因为cursor.moveToFirst()返回false。

cursor.moveToFirst()返回false表示没有与ur匹配的数据查询检查cursor.getCount()来检查数据是否正确有还是没有

最新更新