es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué MediaStore.getMediaUri() devuelve un cursor vacío?

Actualmente estoy haciendo la transición al entorno de almacenamiento limitado (Scoped Storage).
Cuando vi por primera vez MediaStore.getDocumentUri() y getMediaUri(), parecían ser muy útiles.
Pero después de algunas pruebas, resultaron ser completamente inútiles.

Díganme si estoy equivocado, pero para mí, MediaStore.getDocumentUri() parece que solo acepta URIs que se obtuvieron originalmente a través de SAF. Esto significa que solo puede convertir las URIs que se convirtieron previamente utilizando MediaStore.getMediaUri().
De lo contrario, recibo una SecurityException aunque el archivo se crea con la API de MediaStore y todavía me pertenece a mí. (No es la RecoverableSecurityException)

Ahora a la pregunta principal.

(Lo anterior no es realmente una pregunta. Solo me estaba quejando y esperando que alguien me corrija si estaba equivocado al respecto).

¿Es normal que el siguiente código siempre imprima “Cursor Count: 0”?

Llevo horas probando esto, pero todos los resultados son iguales. Si siempre está vacío, ¿cuál es el propósito de getMediaUri() en primer lugar? (Por otro lado, el docUri original devuelve un cursor con DISPLAY_NAME y SIZE en él).

// Aquí docUri es la URI devuelta por el selector del sistema de SAF.
Cursor cursor = getContentResolver().query(MediaStore.getMediaUri(this, docUri), null, null, null, null, null);
Log.i(“my_log”, “Contador de cursor: ” + cursor.getCount());

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    ¿Es normal que el código anterior siempre imprima la frase “Cursor Count: 0”?

    No, no es normal que el código anterior siempre imprima “Cursor Count: 0”. Es probable que no estés utilizando correctamente el método getMediaUri(). El método getMediaUri() debe ser utilizado para convertir una URI obtenida a través de SAF en una URI que pueda ser utilizada con la API MediaStore. Si no estás utilizando correctamente el método getMediaUri(), es probable que la URI que estás pasando al método query() no sea válida y, por lo tanto, el Cursor esté vacío.

Comments are closed.