2011-02-05 19 views
10

Sto scrivendo la mia prima app per Android, che sarà più o meno un gestore di punti di montaggio. Le montature locali e le montature NFS sono state facili, ma non sono sicuro di come procedere sulle condivisioni CIFS.ANDROID: accesso alle condivisioni CIFS in Java

Idealmente, dopo aver selezionato un host, verrà visualizzato un elenco di condivisioni CIFS. Al minimo, dovrei essere in grado di inserire un URI/stringa di condivisione CIFS e montarlo (ad esempio: // 192.168.1.100/mount_point). Sto pensando a EStrongs, dove puoi selezionare un host, e mostrerà le condivisioni, che potrai esplorare ulteriormente.

Ho visto jCIFS (penso che questo sia quello che usa Astro), e ho visto menzionare il modulo cifs.ko su xda-developers. Ci sono altri approcci standard? Qualche suggerimento/consiglio su come utilizzare l'uso di jCIFS o cifs.ko e di farlo in generale? Preferirei non dover ottenere l'accesso come root.

+0

dispiace rovinare la vostra idea, ma è già stato fatto https://market.android.com/details?id=ws.plattner.cifsmanager – maxcanna

+0

Ma cifsmanager richiede root (e @EricCoutu indicato una preferenza per non guadagnare radice). – martijno

risposta

4

Fellow Androider qui, ho guardato in vari protocolli in passato e questo è quello che ho trovato:

Se deve essere CIFS, allora mi sento di raccomandare JCIFS. Astro lo usa, come hai detto e anche EStrongs. E ... così fa AndSMB di lysesoft. Quindi, sono abbastanza sicuro che sia l'approccio standard "vai a".

Se siete alla ricerca in SMB solo di supporto, si può essere interessato a questo come alternativa: http://java-source.net/open-source/network-clients/jftp

Inoltre, per altri protocolli, questa è una grande lista di esaminare: http://java-source.net/open-source/network-clients

Speranza questo aiuta

2

Poiché Android è Linux, è possibile utilizzare i driver del kernel, ma il caricamento di questi richiede root oppure è possibile utilizzare FUSE, che è presumibilmente supportato da Gingerbread (non l'ho provato da solo), o in effetti è possibile utilizzare un libreria Java come JCIFS

2

Una rapida cattura di Wireshark mostra che EStrongs utilizza anche jCIFS, quindi anche questa sarebbe la mia raccomandazione. jCIFS è stato scritto per essere un toolkit client CIFS, quindi dovrebbe essere adattabile agli obiettivi del progetto. Non "monta" il file system remoto, di per sé, ma ti dà accesso a file, directory, condividi elenchi, ecc. Come ti presenti che le informazioni sono a tua discrezione.

Un'altra risorsa sarebbe Implementing CIFS, un libro online sui componenti interni della suite di protocolli SMB/CIFS. In particolare, dai un'occhiata a Appendix D, che copre il formato dell'URL SMB. L'URL SMB è preferito rispetto al formato UNC finto utilizzato nel post originale (sopra).