2011-01-20 11 views
8

me preguntaba si puedo iniciar una Intención para ver un directorio con un explorador de archivos (si hay uno instalado en el dispositivo) para que pueda abrir una carpeta como esta:tipo MIME de directorios en Android

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/MyFolder"); 
intent.setDataAndType(uri, "MIME TYPE FOR FOLDERS"); 
startActivity(intent); 
+1

No hay un tipo MIME para las carpetas que yo sepa. – fredley

+2

Ummm ... ¿Alguna pista sobre cómo abrir una carpeta con un explorador de archivos ya instalado? Gracias – Pedriyoo

Respuesta

3

AndExplorer tiene tipos mime proveedor de usar AndExplorer como un selector de archivos:

  • vnd.android.cursor.dir/lysesoft.andexplorer.director
  • vnd.android.cursor.dir/lysesoft.andexplorer.file

Consulte AndExplorer's developper documentation para obtener más información. Creo que otros exploradores de archivos tienen características similares, pero aún no encontré sus documentos.

+0

No hay ninguna razón para especificar una aplicación específica para esto. [Ver esta respuesta] (http://stackoverflow.com/a/31725812/1748584) para una solución mejor y más general – Project

2

Blackmoon File Browser responde al tipo MIME del

  • vnd.android.cursor.item/archivo

con el fin de abrirlo es vista de forma que el contenido de una carpeta se muestran o, en el caso de un archivo, su carpeta principal se muestra desplazada para mostrar ese archivo en particular.

Puede ver Blackmoon's dev documentation delineando varias intenciones que utiliza también.

Lástima que Android no haya especificado un tipo MIME particular para ver un archivo/carpeta en una aplicación de búsqueda de archivos. De esta forma, todas las aplicaciones de administración de archivos usarían las mismas intenciones para que los usuarios puedan elegir libremente entre las aplicaciones que funcionen mejor para ellos en lugar de estar encerradas en una aplicación en particular.

Supongo que ese es el motivo por el que existe un sitio como http://www.openintents.org/ para que los desarrolladores puedan compartir algunos estándares o al menos publicar algunas capacidades de aplicaciones estándar.

3

Las cadenas 'inode/directory' y 'x-directory/normal' parecen ser tipos MIME preexistentes para sistemas basados ​​en Unix, de acuerdo con algunas búsquedas de Google, pero nada de lo que tengo en mi teléfono lo sabe así que probablemente los verifique y los ofrezca antes de buscar el directorio vnd.android.cursor.item /, que al menos tiene el valor de no ser vinculante para una aplicación en particular.

No estoy dispuesto a utilizar un tipo específico de la aplicación.

(acabo de encontrar que ES utiliza 'de recursos/carpeta' que también es plausible independiente de la aplicación;. Lástima que no hay manera de saber Android que estos tipos son todos equivalentes)

+0

Bueno, parece que Cyanogen File Manager (com.cyanogenmod.filemanager) lo usó también – HendraWD

-1

Dado que los archivos que son directorios Don Parece que no tiene un tipo de mime estándar, codifiqué mi explorador de archivos para filtrar intenciones sin un tipo de mimo. Simplemente configura los datos en el Uri de tu carpeta. Esto también establece el esquema de intención en "archivo", que es requerido por mi filtro de intención.

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/MyFolder"); 
intent.setData(uri); 
startActivity(intent); 

Este intento se lanzará siguiente aplicación:

http://play.google.com/store/apps/details?id=com.organicsystemsllc.thumbdrive

+1

Pero si el usuario el teléfono no tiene esa aplicación, fallará. Intenté con mi teléfono, solo aparece Drive PDF Viewer y SQLiteViewer en su lugar – HendraWD

2

De acuerdo con el funcionario docs es vnd.android.cursor.dir/*

+0

¿De verdad? Eso es para ACTION_PASTE ... – HendraWD

+1

Supongo que los tipos MIME son independientes de la acción. – Archibald

+0

Lo probé y la fuerza de la aplicación se cerró, este es el registro de error: "java.lang.RuntimeException: no se puede iniciar la actividad ComponentInfo {com.android.gallery3d/com.android.gallery3d.app.GalleryActivity}: java.lang. ClassCastException: com.android.gallery3d.data.UriImage no se puede convertir a com.android.gallery3d.data.MediaSet " – HendraWD