Я пытаюсь использовать следующий код для получения случайного номера мобильного телефона из контактов:
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, "DISPLAY_NAME = '" + "NAME" + "'", null, null);
cursor.moveToFirst();
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phones = cr.query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + " = " + contactId, null, null);
List numbers = new ArrayList();
while (phones.moveToNext()) {
String number = phones.getString(phones.getColumnIndex(Phone.NUMBER));
int type = phones.getInt(phones.getColumnIndex(Phone.TYPE));
switch (type) {
case Phone.TYPE_MOBILE:
numbers.add(number);
break;
}
}
Random randGen = new Random();
return (String) numbers.get(randGen.nextInt(numbers.size()));
Однако выполнение этого кода приводит к сбою в строке 4 с сообщением «CursorIndexOutOfBoundsException: индекс 0 запрошен, с размером 0». Кажется, сбой вызван методом cursor.getString (). Кто-нибудь знает, где я иду не так? Это использует ContactsContract в Android 2.1. Затмение не дает ошибок.
Спасибо!