以下は私のコードで、Android.database.CursorIndexOutOfBoundsException
:Index -1が要求され、サイズ2のエラーが発生しました。誰かがそれを解決する方法を教えてもらえますか?
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (Integer.parseInt(cur.getString(
cur.getColumnIndex(People.PRIMARY_PHONE_ID))) > 0) {
Cursor pCur = cr.query(
Contacts.Phones.CONTENT_URI,
null,
Contacts.Phones.PERSON_ID +" = ?",
new String[]{id}, null);
int i=0;
int pCount = pCur.getCount();
String[] phoneNum = new String[pCount];
String[] phoneType = new String[pCount];
while (pCur.moveToNext()) {
phoneNum[i] = pCur.getString(
pCur.getColumnIndex(Contacts.Phones.NUMBER));
phoneType[i] = pCur.getString(
pCur.getColumnIndex(Contacts.Phones.TYPE));
i++;
}
}
}
}
Cursor
オブジェクトからデータにアクセスする場合は、Cursor
オブジェクトを配置する必要があります。
実際には、最初の行からデータにアクセスする前に、Cursor
を最初の行に配置する必要があります。
コード内の行cur.moveToFirst();
の後に行Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
を配置します。
また、連絡先の取得に古いAPIを使用していないことも確認してください。