11

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

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

我看过 jCIFS(我认为这是 Astro 使用的),并且我在 xda-developers 上看到过提及 cifs.ko 模块。还有其他标准方法吗?关于如何使用 jCIFS 或 cifs.ko 并在一般情况下执行此操作的任何提示/建议?我宁愿不必获得root访问权限。

4

3 回答 3

5

在这里的 Androider 同事,我过去研究过各种协议,这就是我发现的:

如果必须是 CIFS,那么我会推荐 jCIFS。正如您提到的,Astro 确实使用它,而 EStrons 也使用它。并且... lysesoft 的 AndSMB 也是如此。所以,我很确定这是“转到”标准方法。

如果您正在研究仅支持 SMB,您可能对此感兴趣:http: //java-source.net/open-source/network-clients/jftp

此外,对于其他协议,这是一个很好的列表:http: //java-source.net/open-source/network-clients

希望有帮助。

于 2011-12-24T05:10:06.950 回答
3

快速的 Wireshark 捕获显示 EStrons 也使用 jCIFS,所以这也是我的建议。jCIFS 被编写为 CIFS 客户端工具包,因此它应该能够适应您的项目目标。它本身并不“挂载”远程文件系统,而是让您访问文件、目录、共享列表等。如何呈现这些信息取决于您。

另一个资源是Implementing CIFS,这是一本关于 SMB/CIFS 协议套件内部结构的在线书籍。特别是,请查看附录 D,它涵盖了 SMB URL 格式。SMB URL 优于原始帖子(上图)中使用的模拟 UNC 格式。

于 2011-12-28T23:04:01.757 回答
2

因为 Android 是 Linux,你可以使用内核驱动程序,但加载这些驱动程序需要 root,或者你可以使用FUSE,据说自 Gingerbread 以来就支持它(我自己还没有尝试过),或者你可以使用 JCIFS 之类的 Java 库

于 2011-12-21T03:45:03.710 回答