ACTION OPEN DOCUMENT TREE sólo devuelve vacío Carpeta reciente

He copiado cuidadosamente el fragmento de código siguiente de una publicación anterior y funciona, en el simulador y también en mi dispositivo Nexus 9, hasta un punto!

Sin embargo, todo lo que obtengo es una carpeta reciente vacía y nunca llego al código que escribe un archivo.

¿Qué debo cambiar para obtener un árbol de documentos adecuado?

private void testDocumentTree() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, 42); } public void onActivityResult(int requestCode, int resultCode, Intent resultData) { String TAG = "onActivityResult"; if (resultCode == RESULT_OK) { Uri treeUri = resultData.getData(); DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri); // List all existing files inside picked directory for (DocumentFile file : pickedDir.listFiles()) { Log.d(TAG, "Found file " + file.getName() + " with size " + file.length()); } // Create a new file and write into it DocumentFile newFile = pickedDir.createFile("text/plain", "My Novel"); try { OutputStream out = getContentResolver().openOutputStream(newFile.getUri()); out.write("A long time ago...".getBytes()); out.close(); } catch (FileNotFoundException e) { Log.d(TAG, "File Not Found, reason: ", e); } catch (IOException e) { Log.d(TAG,"IOException, reason: ", e); } } } 

Tuve el mismo problema que tú.

Hice clic en "Mostrar almacenamiento interno" en el menú de desbordamiento

Introduzca aquí la descripción de la imagen

Después de eso pude ver "Almacenamiento interno" en el cajón

Introduzca aquí la descripción de la imagen

Otros mencionaron la opción en DocumentsUI que el usuario debería activar manualmente. Sin embargo, hay otra opción. Agrega estos extras a tu ACTION_OPEN_DOCUMENT, ACTION_GET_CONTENT, ACTION_CREATE_DOCUMENT o ACTION_OPEN_DOCUMENT_TREE. El botón Explorar en Configuración de almacenamiento utiliza estos extras mientras se abre la aplicación DocumentsUI. Creo que el primero es suficiente para mostrar el almacenamiento interno y sdcard. Los otros son buenos para tener.

 intent.putExtra("android.content.extra.SHOW_ADVANCED", true); intent.putExtra("android.content.extra.FANCY", true); intent.putExtra("android.content.extra.SHOW_FILESIZE", true); 

No estoy seguro de si esto es lo que estás pidiendo, pero en el selector de carpetas, donde estás viendo sólo la carpeta reciente, hay un menú de desbordamiento donde se puede alternar entre mostrar / ocultar tarjeta SD.

Menú desbordamiento

Para mí su trabajo en el emulador, pero no en el teléfono Android 5 real. Incluso he comprobado google android Directory Selection muestra y también no funcionó.

Por lo tanto, es seguramente un error cuyo efecto se puede ver en algunos teléfonos.

Informar de este error a google y esperar hasta que se fija. Hasta entonces todo lo que puede hacer es restringir el acceso a la tarjeta de memoria en su aplicación, que es lo que no puede querer hacer. Pero creo que no hay nada que podamos hacer de nuestro lado antes de que Google lo corrija.

Si usted consigue cualquier solución para esto usted puede decirme también.

  • Cómo leer / escribir cadena de un archivo en Android
  • Android - ¿Cómo puedo guardar un archivo legible por otra aplicación?
  • ¿Cómo pasar una ruta de acceso de archivo que está en la carpeta assets a File (String path)?
  • Editar mediante programación las propiedades de build.prop en Android
  • Separación de recursos / archivos a diferentes apk para pelar
  • Android: Diferencia entre FileOutputStream y FileWriter
  • No se puede escribir en la tarjeta SD - canWrite devuelve false
  • Cómo mostrar el tamaño del archivo en vista de lista con nombre de archivo
  • Leer / escribir el archivo en el almacenamiento privado interno
  • no hay permiso para escribir en / mnt / extsd
  • Eliminar archivos anteriores al tiempo dado desde el directorio
  • Interesting Posts
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.