ANDROID:在Java中访问CIFS共享

ANDROID:在Java中访问CIFS共享,java,android,smb,cifs,Java,Android,Smb,Cifs,我正在编写我的第一个Android应用程序,它或多或少将成为一个挂载点管理器。本地挂载和NFS挂载很容易,但我不确定如何进行CIFS共享 理想情况下,选择主机后,将显示CIFS共享列表。至少,我应该能够输入一个CIFS URI/共享字符串并挂载它(例如://192.168.1.100/mount_point)。我想到的是EStrongs,您可以选择一个主机,它将显示共享,然后您可以进一步探索 我看过jCIFS(我认为这就是Astro使用的),也看过xda开发人员提到的cifs.ko模块。还有其他

我正在编写我的第一个Android应用程序,它或多或少将成为一个挂载点管理器。本地挂载和NFS挂载很容易,但我不确定如何进行CIFS共享

理想情况下,选择主机后,将显示CIFS共享列表。至少,我应该能够输入一个CIFS URI/共享字符串并挂载它(例如://192.168.1.100/mount_point)。我想到的是EStrongs,您可以选择一个主机,它将显示共享,然后您可以进一步探索


我看过jCIFS(我认为这就是Astro使用的),也看过xda开发人员提到的cifs.ko模块。还有其他标准方法吗?关于如何使用jCIFS或cifs.ko以及如何在一般情况下这样做,有什么提示/建议吗?我宁愿不必获得root访问权。

因为Android是Linux,你可以使用内核驱动程序,但加载这些驱动程序需要root,或者你可以使用自Gingerbread(我自己还没有尝试过)以来就支持的FUSE,或者你可以在这里使用类似JCIFS的Java库,我在过去研究过各种协议,我发现:

如果必须是CIFS,那么我推荐jCIFS。Astro确实使用了它,正如你提到的,EStrongs也使用了它。还有…还有lysesoft的AndSMB。所以,我很确定这是“去”的标准方法

如果您只考虑支持SMB,您可能会对此感兴趣:

此外,对于其他协议,这是一个很好的列表:


希望这能有所帮助。

快速捕获Wireshark显示EStrongs也使用jCIFS,所以这也是我的建议。jCIFS是作为CIFS客户机工具包编写的,因此它应该适合您的项目目标。它本身并不“挂载”远程文件系统,但允许您访问文件、目录、共享列表等。如何显示这些信息取决于您自己


另一个资源是关于SMB/CIFS协议套件内部的在线书籍。特别是,看一看,其中包括SMB URL格式。SMB URL优先于原始帖子(如上)中使用的模拟UNC格式。

很抱歉打乱了您的想法,但已经完成了,但cifsmanager需要root(并且@EricCoutu表示优先不获取root)。