連絡先の電話番号を表示します。私は何も起こりませんエミュレータで自分のコードを実行されますが、私は自分のスマートフォンでそれを実行したとき、私は連絡先contentProviderが空のカーソルを返しています
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
コードイムで作業logcat ---->でこのエラーを発見した場合は
Cursor peopleCursor =
getContentResolver().query(ContactsContract.Contacts.CONTENT_URI
,null, null,null, null);
String [] nb = new String[peopleCursor.getCount()];
String [] Tname = new String[peopleCursor.getCount()];
if(peopleCursor.getCount()>0){
peopleCursor.moveToFirst();
Cursor numberCursor;
for(int i=0;i<peopleCursor.getCount();i++)
{
//get number
numberCursor=
getContentResolver().query(ContactsContract.
CommonDataKinds.Phone.CONTENT_URI, new String[]
{ContactsContract.CommonDataKinds.Phone.NUMBER}
,ContactsContract.CommonDataKinds.Phone._ID+"="+peopleCursor
.getString(peopleCursor.getColumnIndex(ContactsContract.Contacts._ID))
, null,null);
numberCursor.moveToFirst();
String number=numberCursor.getString(numberCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
nb[i]=number;
//get name
String name=peopleCursor.getString(numberCursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Tname[i]=name;
peopleCursor.moveToNext();
}
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.contact_entry, peopleCursor,nb
, new int[] {R.id.checkBox});
lv.setAdapter(adapter);
}
}
です
どのような解決策をしてください?
あなたのクエリには結果がないため、空のカーソルがあなたに返されています。 例外が発生するのは、そこにないカーソルから情報を取り出そうとしているためです。 なぜ空のカーソルが戻ってくるのかを知るためには、連絡先APIにはなじみがありません。 – FoamyGuy