开发者

Fetching only first 100 rows of image from mediastore

Is there a way to limit the result retrieved from mediastore using managedQuery function on Android. Since I currently have a grid that displaying all photos found on the sd card but it is too intensive of fetching it so I decide to limit the result retrieved from the media store but could not find a limit function that can reduce the resulting set of data.

开发者_如何转开发Please help


use order in contentresolver's query method to implement your function, such as 'columnname asc limit number'

in my case:

cursor = resolver.query(STORAGE_URI, projection,
                        Media.BUCKET_DISPLAY_NAME + "=?",
                        new String[] { folderName },
                        " _id asc limit " + num);


You can limit the result using the sortOrder parameter in query method. Something like this

ContentResolver contentResolver = getContentResolver();
Cursor androidCursor = null;
String sortOrder = String.format("%s limit 100",BaseColumns._ID);
androidCursor = contentResolver.query(IMAGE_URI,PROJECTION, null, null, sortOrder);

This will order the result set by id and limit the result.


When targeting Android 11 the suggested answer will cause an exception, with java.lang.IllegalArgumentException: Invalid token LIMIT

Instead you should provide a "limit" query parameter on the URI that the MediaProvider will read.

val queryUri = IMAGE_URI.buildUpon().appendQueryParameter("limit", limit.toString()).build()

I haven't found documentation for this, but it's present in the sources

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜