Obteniendo solo las primeras 100 filas de imagen de mediastore

¿Hay alguna manera de limitar el resultado recuperado de mediastore usando la función managedQuery en Android? Dado que actualmente tengo una cuadrícula que muestra todas las fotos que se encuentran en la tarjeta sd, pero la búsqueda es demasiado intensa, así que decido limitar el resultado recuperado de la tienda de medios, pero no pude encontrar una función de límite que pueda reducir el conjunto de datos resultante .

Por favor, ayuda

preguntado el 10 de mayo de 11 a las 13:05

3 Respuestas

use el orden en el método de consulta de contentresolver para implementar su función, como 'número de límite de asc de nombre de columna'

en mi caso:

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

Respondido 10 Jul 11, 14:07

y necesitas el " asc ", no puede simplemente poner" límite N ". - Jeffrey Blattman

Asegúrese de no usar formato de cadena para crear el parámetro, ya que realiza la localización de forma predeterminada, es decir, la siguiente declaración causará una excepción de SQL en teléfonos árabes: String sortOrder = String.format(" _id asc limit (%d)", num); - Tom Susel

@TomSusel Más bien no confíe en la configuración regional predeterminada :) - Aleks N.

Puede limitar el resultado utilizando el parámetro sortOrder en pregunta método. Algo como esto

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

Esto ordenará el conjunto de resultados por id y limitará el resultado.

contestado el 10 de mayo de 11 a las 17:05

Al apuntar a Android 11, la respuesta sugerida causará una excepción, con java.lang.IllegalArgumentException: Invalid token LIMIT

En su lugar, debe proporcionar un parámetro de consulta "límite" en el URI que leerá MediaProvider.

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

No he encontrado documentación para esto, pero está presente en el fuentes

respondido 09 nov., 20:15

Esto no funcionó para mí, este parámetro de consulta fue ignorado. - Ben Butterworth

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.