android获取电话号码的时候出现异常。
int nameIndextNumber=cursor.getColumnIndex(PhoneLookup.NUMBER); //获得电话号码number =cursor.getString(nameIndextNumber);
报java lang illegalStateException: get field slot from row 0 col -1 failed
//================================================
ContentResolver cr=getContentResolver();//得到ContentResolver对象
Cursor cursor =cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while(cursor.moveToNext()){
int nameIndext=cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME); //获得电话簿中的姓名列
String contact=cursor.getString(nameIndext);
String number="";
int nameIndextNumber=cursor.getColumnIndex(PhoneLookup.NUMBER); //获得电话号码
number =cursor.getString(nameIndextNumber);
sb.append(contact+":"+number+"\n");
}
cursor.close();
tvView.setText(sb.toString());
[================================
这是书上的源码,基本是一字不差,真机调试和模拟器调试都试过了。。都会出现这样的情况。。模拟器上我还特意在电话本里添加了用户和电话号码。
而真机里原本就存了很多电话号码,获取姓名的时候就可以,但是获取电话号码的时候机会出现这种情况。。
[解决办法]
你可以去官方的API文档里看看是不是对应的URI有电话号码这个属性可以访问,或者你可以把完整的工程项目发给我