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