android - Cursor - Make sure the Cursor is initialized correctly before accessing data from it -
i following error:
couldn't read row 439, col 60 cursorwindow. make sure cursor initialized correctly before accessing data it. @ android.os.parcel.readexception(parcel.java:1433) @ android.database.databaseutils.readexceptionfromparcel(databaseutils.java:185) @ android.database.databaseutils.readexceptionfromparcel(databaseutils.java:137) @ android.database.bulkcursorproxy.getwindow(bulkcursornative.java:164) @ android.database.bulkcursortocursoradaptor.onmove(bulkcursortocursoradaptor.java:83) @ android.database.abstractcursor.movetoposition(abstractcursor.java:214) @ android.database.abstractcursor.movetonext(abstractcursor.java:245) @ android.database.cursorwrapper.movetonext(cursorwrapper.java:166) @ ....updatephonecontactsjob.h(updatephonecontactsjob.java:64) the error line corresponds while (cursor.movetonext())... use following function:
cursor cursor = mainapp.get().getcontentresolver().query( contactscontract.data.content_uri,//contactscontract.commondatakinds.phone.content_uri null, null,//data.mimetype + "='" + phone.content_item_type + "'", null, contactscontract.data.contact_id + " asc"); int rawid = cursor.getcolumnindex(contactscontract.data.raw_contact_id); int id = cursor.getcolumnindex(contactscontract.data.contact_id); int lookupkey = cursor.getcolumnindex(contactscontract.data.lookup_key); // int photouri = cursor.getcolumnindex(contactscontract.data.photo_uri); int photoid = cursor.getcolumnindex(contactscontract.data.photo_id); int name = cursor.getcolumnindex(contactscontract.data.display_name); int accounttype = cursor.getcolumnindex(contactscontract.data.account_type_and_data_set); int number = cursor.getcolumnindex(contactscontract.commondatakinds.phone.number); int numbertype = cursor.getcolumnindex(contactscontract.commondatakinds.phone.type); int numberlabel = cursor.getcolumnindex(contactscontract.commondatakinds.phone.label); int mimetype = cursor.getcolumnindex(contactscontract.contacts.data.mimetype); int rawcontactname = cursor.getcolumnindex(contactscontract.rawcontacts.account_name); contactcomparator compid = new contactcomparator(contactcomparator.type.id); contactcomparator compname = new contactcomparator(contactcomparator.type.name); while (cursor.movetonext()) { int phid = cursor.getint(id); string phlookupkey = cursor.getstring(lookupkey); // string phphotouri = cursor.getstring(photouri); int phphotoid = cursor.getint(photoid); long phrawid = cursor.getlong(rawid); string phnumber = cursor.getstring(number); int phnumbertype = cursor.getint(numbertype); string phnumberlabel = cursor.getstring(numberlabel); string phmimetype = cursor.getstring(mimetype); string phaccounttype = cursor.getstring(accounttype); string phrawcontactname = cursor.getstring(rawcontactname); phonecontact contact = new phonecontact(phid, phrawid, phlookupkey, phphotoid > 0); // funktioniert, weil kontakte nach id sortiert sind! int contactindex = collections.binarysearch(contacts, contact, compid); if (contactindex < 0) { string phname = cursor.getstring(name); contact.setname(phname); contacts.add(contact); } else { contact = contacts.get(contactindex); } string accountname = basedef.makeaccounttypereadable(phaccounttype, phrawcontactname); contact.addaccounttype(accountname); // liste der accounttypen merken if (!accounttypes.contains(accountname)) accounttypes.add(accountname); if (phmimetype.equals(contactscontract.commondatakinds.phone.content_item_type)) { string phonelabel = (string) contactscontract.commondatakinds.phone.gettypelabel(mainapp.get().getresources(), phnumbertype, phnumberlabel); contact.addnumber(phonelabel, phnumber); } } cursor.close(); is function prone errors? change avoid error mentioned above?
Comments
Post a Comment