2010-11-05 9 views
25

Me gustaría hacer un explorador de archivos que va a hacer dos cosas: 1) Permitir al usuario para buscar y seleccionar un directorio 2) Permitir al usuario navegar por todos los archivos en su sdcardProgramación de Android: ¿Por dónde empezar para crear un navegador de archivos simple?

He buscado tutoriales, pero parece que no puede encontrar ninguno? ¿Puede alguien ayudarme explicando cómo debería hacer mi código para tener un simple explorador de archivos o proporcionarme un enlace a un tutorial/código fuente?

¡Gracias y gracias!

Respuesta

26

Si en verdad está más interesado en aprender a escribir el suyo, le sugiero que lea detenidamente la documentación de la clase File. Ahí es donde harás la mayor parte del trabajo.

En el caso de tarjetas SD/otro almacenamiento externo para Android, tendrá que comprobar primero para asegurarse de que el almacenamiento externo está montado y disponible antes de intentar leerlo, utilizando la clase Environment:

String extState = Environment.getExternalStorageState(); 
//you may also want to add (...|| Environment.MEDIA_MOUNTED_READ_ONLY) 
//if you are only interested in reading the filesystem 
if(!extState.equals(Environment.MEDIA_MOUNTED)) { 
    //handle error here 
} 
else { 
    //do your file work here 
} 

una vez que haya determinado el estado adecuado del almacenamiento externo, una forma sencilla de empezar es utilizar el método listFiles de archivo(), así:

//there is also getRootDirectory(), getDataDirectory(), etc. in the docs 
File sd = Environment.getExternalStorageDirectory(); 
//This will return an array with all the Files (directories and files) 
//in the external storage folder 
File[] sdDirList = sd.listFiles(); 

a continuación, puede empezar a utilizar FileFilters a limitar los resultados :

FileFilter filterDirectoriesOnly = new FileFilter() { 
    public boolean accept(File file) { 
     return file.isDirectory(); 
    } 
}; 
File[] sdDirectories = sd.listFiles(filterDirectoriesOnly); 

A partir de ahí, acaba de leer a través de los documentos para encontrar el tipo de cosa que usted está buscando para hacer con él, y luego se puede trabajar en atar estos en la lista de adaptadores, etc.

Esperanza ¡esto ayuda!

+0

Oh, por cierto, tengo un archivo de trabajo que funciona y script de lectura de archivos que he probado y funciona, quería que el navegador de archivos que estoy creando simplemente devuelva el Uri del archivo en el que hizo clic/directorio que seleccionaste – AlexPriceAP

+0

En ese caso, simplemente agregue un controlador de clic que devuelva la ruta del archivo correspondiente (por ejemplo, 'sdDirectories [1] .getAbsolutePath()'). – kcoppock

+0

¡Muchas gracias, voy a comenzar a hacerlo pronto! Si tengo problemas, ¿estaría bien si te pido ayuda o preferirías no hacerlo? :) – AlexPriceAP

8

Eche un vistazo a OI File Manager, que es un administrador de archivos de código abierto de Android. Puede obtener el código fuente here.

+0

Realmente recomendaría * usar * OI File Manager, en lugar de copiarlo. En mis aplicaciones, solo agrego un botón que inicia OI File Manager para seleccionar un archivo, y ofrece una descarga desde Market si no está instalado. – EboMike

+0

Eso es lo que he hecho por el momento con ES File Explorer, estoy interesado en hacer el mío realmente. – AlexPriceAP

+5

¿Cómo se asegura de que sus usuarios tengan OI File Manager instalado? Copiar la fuente asegura que se empaqueta en tu archivo .apk ... solo transmitir una intención es cruzar los dedos y esperar. –

21

Esta es una respuesta tardía, pero trabajé en la creación de un explorador de archivos de Android recientemente. https://github.com/mburman/Android-File-Explore

Es muy sencillo. Esencialmente es solo 1 archivo que necesitaría integrar en su aplicación.

+0

Gracias por la ayuda, pero ya construí el código de Kcoppock y lo terminé hace un tiempo, pero, en conjunto, parece una buena aplicación :) – AlexPriceAP

+0

¡GRACIAS, FUNCIONA PERFECTAMENTE! –

+0

+1 para un gran código, necesita algunas mejoras menores ... – uLYsseus

Cuestiones relacionadas