仅从媒体存储中获取前 100 行图像

发布于 2024-11-06 22:00:33 字数 139 浏览 4 评论 0原文

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

请帮忙

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏至、离别 2024-11-13 22:00:33

在 contentresolver 的查询方法中使用 order 来实现您的功能,
例如

我的例子中的“columnname asc limit number”:

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

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);
柠檬色的秋千 2024-11-13 22:00:33

您可以使用 查询方法。像这样

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 对结果集进行排序并限制结果。

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.

夜清冷一曲。 2024-11-13 22:00:33

当针对 Android 11 时,建议的答案将导致异常,并显示 java.lang.IllegalArgumentException: Invalid token LIMIT

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

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文