0
Я могу найти номер контакта с ее идентификатором. Следующий фрагмент печатает номер на экране.Идентификатор контакта от номера
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
CONTACT_PROJECTION,ContactsContract.CommonDataKinds.Phone._ID +" = 4627",
null, null);
phones.moveToNext();
String phoneNumber = phones.getString(
phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(getBaseContext(), phoneNumber, Toast.LENGTH_LONG).show();
Однако, если я пытаюсь найти ее идентификатор из ее номера,
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
CONTACT_PROJECTION,ContactsContract.CommonDataKinds.Phone._ID +" = 4627",
null, null);
phones.moveToNext();
String phoneNumber = phones.getString(
phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//Now I got a valid phone number
//using that number to find the id
Cursor ids = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
CONTACT_PROJECTION,ContactsContract.CommonDataKinds.Phone.NUMBER +" = "+ phoneNumber,
null, null);
ids.moveToNext();
String id = ids.getString(
ids.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
Toast.makeText(getBaseContext(), id, Toast.LENGTH_LONG).show();
Я получаю следующее сообщение об ошибке.
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
Проекция я использую следующим образом:
private static final String[] CONTACT_PROJECTION = new String[] {
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID
};
Второй курсор пуст, даже если я знаю, что есть такая запись в контактах. Что я делаю не так?
Я помню, что есть фильтр содержимого uri для запроса по номеру телефона. –
Итак, вы говорите, что: ContactsContract.CommonDataKinds.Phone.NUMBER! = ContactsContract.PhoneLookup.NUMBER (это то, что я не знаю) – 0x5f3759df