6

我正在寻找一种以编程方式挂载 Samaba 共享的方法。

我知道这个问题,如果它有效,将允许我的应用程序中浏览 Samba 共享,但我希望这些共享在安装后可供其他应用程序使用。

我知道 ES File Explorer 可以做到这一点,所以它必须可以在代码中实现,但我试图弄清楚它是如何完成的。我能想到的唯一方法是使用 Runtime.getRuntime().exec(...) 打开一个进程,但接下来是发送什么命令的问题。我一直在玩终端模拟器应用程序,标准的 mount 命令似乎不起作用。我尝试了以下方法:

mount -t smbfs //[ipaddress] /mnt/sdcard/net/Share1

mount -t cifs //[ipaddress] /mnt/sdcard/net/Share1

但在这两种情况下,我都会收到信息量不大的错误消息“mount: no such device”

我哪里会出错?

4

2 回答 2

6

您的内核目前可能不支持 smbfs/cifs。正如Delyan所说,确保您的内核可以挂载这些文件系统:

$ cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   tmpfs
nodev   debugfs
nodev   sockfs
nodev   usbfs
....

如果它们未列出,您应该尝试进行 modprobing(有时您只需要激活您想要的模块),然后获取 root 访问权限:

# modprobe <modulename(without.ko)>

例如:

# modprobe cifs

如果它不起作用,您将不得不更改或重新编译您的内核(包括适当的模块)。

于 2013-06-28T00:28:51.803 回答
1

我遇到了完全相同的问题。Cifs 管理器正在工作,但来自终端的命令却没有。无论如何,对我来说,结果证明我只需要稍微修改命令就可以了。尝试以下命令:

mount -o username=guest,password=guest -t cifs //[ipaddress]/[share] /sdcard/cifs/nas

在运行命令之前确保本地文件夹 /sdcard/cifs/nas(或您想要的等效文件夹)存在,否则您可能会收到“文件或目录不存在”错误。

于 2015-04-13T17:22:57.417 回答