2011-01-20 17 views
8

Mi chiedevo se posso iniziare un Intent per la visualizzazione di una directory con un browser di file (se ce n'è uno installato sul dispositivo) in modo da poter aprire una cartella come questo:tipo MIME per le directory in 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

Non c'è un tipo MIME per le cartelle per quanto ne so. – fredley

+2

Ummm .. Eventuali indizi su come aprire una cartella con un browser di file già installato? Grazie – Pedriyoo

risposta

3

AndExplorer ha tipi fornitore mime di utilizzare AndExplorer come un selettore di file:

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

Vedere AndExplorer's developper documentation per ulteriori informazioni. Penso che altri file explorer abbiano caratteristiche simili, ma non ho ancora trovato i loro documenti.

+0

Non c'è motivo di specificare un'app specifica per questo. [Vedere questa risposta] (http://stackoverflow.com/a/31725812/1748584) per una soluzione migliore e più generale – Project

2

Blackmoon File Browser risponde al tipo MIME di

  • vnd.android.cursor.item/file di

al fine di aprire la sua vista in modo che il contenuto di una cartella sono mostrati o, in Nel caso di un file, la sua cartella genitore viene mostrata scorrendo per mostrare quel particolare file.

È possibile visualizzare Blackmoon's dev documentation delineando varie intenzioni che utilizza pure.

È un peccato che Android non abbia specificato un particolare tipo MIME per la visualizzazione di un file/cartella in un'applicazione di navigazione dei file. In questo modo tutte le app di gestione dei file utilizzerebbero gli stessi intenti in modo che gli utenti possano scegliere liberamente tra le app migliori per loro anziché essere bloccate in una particolare app.

Immagino che sia il motivo per cui tale sito come http://www.openintents.org/ esiste in modo che gli sviluppatori possano condividere alcuni standard o almeno pubblicare alcune funzionalità di app standard.

3

Le stringhe 'inode/directory' e 'x-directory/normal' sembrano essere tipi MIME preesistenti per sistemi basati su Unix, secondo alcune ricerche di Google, ma nulla di ciò che ho sul mio telefono sa di quindi probabilmente controllerò e offrirò quelli, prima di cercare la directory vnd.android.cursor.item/che almeno ha il valore di non vincolare ad una particolare applicazione.

Non sarei incline a utilizzare un tipo specifico dell'applicazione.

(ho appena scoperto che ES usi 'di risorse/cartella', che è anche plausibilmente indipendente dalle applicazioni;. Peccato non c'è modo di dire Android che questi tipi sono tutti equivalenti)

+0

Bene, sembra che sia stato utilizzato anche Cyanogen File Manager (com.cyanogenmod.filemanager) – HendraWD

-1

Poiché i file che sono le directory don Sembra che abbia un tipo mime standard, ho codificato il mio file explorer per filtrare gli intent senza un tipo mime. Basta impostare i dati sull'URI della cartella. Questo imposta anche lo schema di intent su "file", che è richiesto dal mio filtro intent.

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

Questo intento lancerà seguente app:

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

+1

Ma se l'utente il telefono non ha quell'applicazione, fallirà. Ho provato il mio telefono, mostra semplicemente Drive PDF Viewer e SQLiteViewer invece – HendraWD

2

Secondo il funzionario docs è vnd.android.cursor.dir/*

+0

Davvero? Questo è per ACTION_PASTE ... – HendraWD

+1

Suppongo che i tipi MIME siano indipendenti dall'azione. – Archibald

+0

L'ho provato e l'app force è stata chiusa, questo è il log degli errori: "java.lang.RuntimeException: impossibile avviare l'attività ComponentInfo {com.android.gallery3d/com.android.gallery3d.app.GalleryActivity}: java.lang. ClassCastException: com.android.gallery3d.data.UriImage non può essere trasmesso a com.android.gallery3d.data.MediaSet " – HendraWD