Programando o Intentándolo

Como hacer un explorador de archivos en Android

Vamos a ver un ejemplo de como podemos obtener el listado de archivos y carpetas de nuestro android y poder recorrer la estructura de directorios para nuestras aplicaciones android. Y que mejor ejemplo que hacer un explorador de archivos, para poder ver todos nuestros archivos.

En este ejemplo vamos a ver como mostrar la estructura de archivos de nuestra memoria ¿externa?, lo de externa lo pongo entre interrogaciones porque puede llevar a confusiones ya que aunque en muchos dispositivos si que tienen realmente una memoria externa (microSD) hay en otros como el Nexus, muchos android TV o mi Moto G por ejemplo que no tienen SD, pero una parte de su memoria actúa como memoria externa, para que quede más claro, el lugar donde guardamos nuestra música, videos, etc. ya que es donde tendremos interés en explorar los archivos que tenemos.

Empecemos con el código…

En el onCreate de nuestra aplicación además de establecer el layout que vamos a utilizar, guardamos una referencia al TextView que utilizaremos para que en todo momento podamos ver en que directorio nos encontramos para no perdernos y obtenemos la ruta a nuestra memoria externa con Environment.getExternalStorageDirectory().

Una vez que tenemos el path (la ruta) de nuestro directorio raíz llamamos al método verArchivosDirectorio() donde vamos a realizar el procedimiento para ver los archivos que cuelgan directamente del directorio que le pasemos como parámetro.

El código esta comentado prácticamente línea por línea, por lo que hay poco más que añadir. Quizás lo más importante es indicar que se crean dos listas, una con los nombres de los archivos o directorios y otra con sus rutas, para usar la primera como base para mostrar en el ListView y la de las rutas para poder acceder a los archivos y por lo tanto hay que tener cuidado de ambas listas tengan el mismo numero de elementos y de que estén ordenadas de la misma forma para que cuando seleccionemos un archivo de nuestro ListView realmente se abra dicho archivo y no otro.

Para poder navegar por los directorios y poder “abrir” los archivos necesitamos sobre escribir el método onListItemClick y aquí abriremos el archivo o directorio seleccionado en el listView que hemos creado con la lista de nombres de los archivos y lo abriremos usando la lista de las rutas de los archivos ya que como hemos visto antes ambas están relacionadas y por lo tanto podemos usar cada una para lo que nos interese.

Cuando hacemos click en un elemento pueden suceder 2 cosas que sea un archivo o que sea un directorio, por lo que tenderemos que controlar esa circunstancia para que no se produzcan errores. Si es directorio esta claro que lo que debemos de hacer es hacer una llamada al método verArchivosDirectorio() con la ruta del directorio en cuestión para poder explorar los archivos que contiene y si es un archivo pues ya depende de lo que queramos hacer en nuestra aplicación con dicho archivo, abrirlo con cualquier aplicación, con la nuestra, compartirlo, borrarlo, editarlo o lo que queremos, pero como esto es una aplicación de ejemplo sencilla simplemente vamos a mostrar el nombre del archivo mediante un Toast para mantenerlo todo muy sencillito.

Y eso es todo en cuanto al código java de esta sencilla aplicación, los layouts no los pongo porque no tienen ninguna particularidad especial, pero si que puedes están incluidos junto con el resto del código del proyecto el enlace de unas líneas más abajo.

Y con esto esta todo si ejecutamos la aplicación en una versión anterior a la 4.4 (al menos hasta la 4.2.2 funciona) pero no te preocupes que no has estado perdiendo el tiempo viendo como hacer una aplicación que no funciona en la versión actual de android como pensé yo al probarla en mi Moto G. Para que funcione en nuestro android 4.4 solo hay que añadir el permiso para poder leer de la memoria externa a nuestro AndroidManifest.xml con lo que nos quedaría algo como lo siguiente.

Con esto ya podemos dar por finalizado este ejemplo que puedes descargarte desde aquí para modificarlo, probarlo en tu móvil o lo que tu quieras (el apk esta dentro de la carpeta bin).

captura-explorador-android

Captura de pantalla de la aplicación ejecutándose en un LG E510 con android 4.1.2 (CyanogenMod 10).