Is there a way to limit the number of returned rows to a cursor? I have a phone with about 4000 contacts, I just need some of them.
this is the code i'm using
db = new dBHelper(this); ContentResolver cr = getContentResolver(); Cursor cursor; cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, ContactName + " ASC"); Log.i(TAG, CLASSNAME + " got contacts entries"); for (int it = 0; it <100 ; it++){//cursor.getCount() Log.i(TAG, CLASSNAME + " getting string"); String mytimes_contacted = cursor.getString(cursor.getColumnIndex(dBHelper.times_contacted)); Log.i(TAG, CLASSNAME + " done from the string"); }
the Log i'm getting is
I/Check(11506): [ContactsPicker] got contacts entries I/Check(11506): [ContactsPicker] getting first string D/AndroidRuntime(11506): Shutting down VM W/dalvikvm(11506): threadid=1: thread exiting with uncaught exception (group=0x2aac8578) D/dalvikvm(11541): GC_CONCURRENT freed 923K, 46% free 4000K/7303K, external 1685K/2133K, paused 1ms+8ms E/AndroidRuntime(11506): FATAL EXCEPTION: main E/AndroidRuntime(11506): java.lang.RuntimeException: Unable to start activity ComponentInfo{~~my package name~~}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 3537
It returns just an empty cursor.
The Content Resolver behaves exactly as its name implies: it accepts requests from clients, and resolves these requests by directing them to the content provider with a distinct authority. To do this, the Content Resolver stores a mapping from authorities to Content Providers.
To limit the number of results in your cursor try:
cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, ContactName + " LIMIT 100"); while(cursor.moveToNext()) { // something clever }
The accepted answer is not valid anymore for android 11. In android 11 a constraint was added to not allow using LIMIT in sort value. You need to use the query with bundle parameters. For instance:
val bundle = Bundle().apply { putInt(ContentResolver.QUERY_ARG_LIMIT, 100) } resolver.query( ContactsContract.Contacts.CONTENT_URI, projection, bundle, null )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With