有没有办法限制使用 Android 上的 managedQuery 函数从媒体存储中检索到的结果。由于我目前有一个网格,可以显示在 sd 卡上找到的所有照片,但是获取它的强度太大,所以我决定限制从媒体存储中检索到的结果,但找不到可以减少结果数据集的限制函数.
请帮忙
有没有办法限制使用 Android 上的 managedQuery 函数从媒体存储中检索到的结果。由于我目前有一个网格,可以显示在 sd 卡上找到的所有照片,但是获取它的强度太大,所以我决定限制从媒体存储中检索到的结果,但找不到可以减少结果数据集的限制函数.
请帮忙
在 contentresolver 的查询方法中使用 order 来实现你的功能,例如 'columnname asc limit number'
就我而言:
cursor = resolver.query(STORAGE_URI, projection,
Media.BUCKET_DISPLAY_NAME + "=?",
new String[] { folderName },
" _id asc limit " + num);
您可以使用查询方法中的 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 对结果集进行排序并限制结果。
以 Android 11 为目标时,建议的答案将导致异常,其中java.lang.IllegalArgumentException: Invalid token LIMIT
相反,您应该在 MediaProvider 将读取的 URI 上提供“限制”查询参数。
val queryUri = IMAGE_URI.buildUpon().appendQueryParameter("limit", limit.toString()).build()
我还没有找到这方面的文档,但它存在于源代码中