6

有没有办法限制使用 Android 上的 managedQuery 函数从媒体存储中检索到的结果。由于我目前有一个网格,可以显示在 sd 卡上找到的所有照片,但是获取它的强度太大,所以我决定限制从媒体存储中检索到的结果,但找不到可以减少结果数据集的限制函数.

请帮忙

4

3 回答 3

22

在 contentresolver 的查询方法中使用 order 来实现你的功能,例如 'columnname asc limit number'

就我而言:

cursor = resolver.query(STORAGE_URI, projection,
                        Media.BUCKET_DISPLAY_NAME + "=?",
                        new String[] { folderName },
                        " _id asc limit " + num);
于 2011-07-10T04:15:23.063 回答
3

您可以使用查询方法中的 sortOrder 参数来限制结果。像这样的东西

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

这将按 id 对结果集进行排序并限制结果。

于 2011-05-10T13:14:30.987 回答
2

以 Android 11 为目标时,建议的答案将导致异常,其中java.lang.IllegalArgumentException: Invalid token LIMIT

相反,您应该在 MediaProvider 将读取的 URI 上提供“限制”查询参数。

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

我还没有找到这方面的文档,但它存在于源代码中

于 2020-07-17T19:18:46.417 回答