2013-06-09 3 views
5

Я ищу способ совместного использования акций Samaba.Android - Подключить долю Samba в коде

Я знаю this question, который, если он работает, позволит просматривать долю Samba в моем приложении, но я хочу, акции должны быть доступны для других приложений, когда установлены.

Я знаю, что ES File Explorer может это сделать, поэтому его необходимо реализовать в коде, но я пытаюсь понять, как это делается. Единственный метод, который я могу придумать, - это открыть процесс с Runtime.getRuntime(). Exec (...), но затем возникает вопрос, какие команды отправлять. Я играю в приложении эмулятора терминала, и стандартная команда монтирования, похоже, не работает. Я попытался следующие:

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

и

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

, но в обоих случаях я получаю сообщение об ошибке, а неинформативное «монтирования: нет такого устройства»

Где я мог бы быть идет не так?

+0

Я бы использовал JCIF (я использовал его раньше, он работает) и запустил «Сервис». –

+1

Реальная проблема заключается в том, что для монтирования файловой системы с помощью 'mount' вам понадобится поддержка CIFS в вашем ядре через соответствующие модули. –

+0

Кен, запуск службы не является вариантом. Мне нужно, чтобы файлы были прозрачно доступны для других приложений, которые мне неизвестны. По сути, после завершения монтирования любой файловый обозреватель в любом приложении для Android должен иметь доступ к удаленным файлам. – LairdPleng

ответ

4

Возможно, 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 (иногда модуль, который вы хотите просто должны быть активированы), получить корневой доступ, то:

# modprobe <modulename(without.ko)> 

eg :

# modprobe cifs 

Если это не сработает, вам придется изменить или перекомпилировать ядро ​​(включая соответствующие модули).

+0

У меня есть пояснил в вопросе и повторил в комментариях, что CifsManager работает без какой-либо дополнительной настройки на устройствах, где эта функциональность необходима, но установка через командную строку не работает. – LairdPleng

+0

Является ли опция «Загрузить через insmod» в CifsManager настройки? В этом случае попробуйте запустить 'busybox insmod cifs' перед запуском команды mount. – EricLavault

1

Я столкнулся с той же проблемой. Менеджер Cifs работал, но команды с терминала не было. Для меня в любом случае оказалось, что мне просто пришлось немного изменить команду, и это сработало. Попробуйте следующую команду:

монтирования -o имя пользователя = гость, пароль = гость -t CIFS // [IP-адрес]/[доля]/SDCard/CIFS/NAS

Убедитесь, что локальная папка/SDCard/cifs/nas (или ваш желаемый эквивалент) существует перед запуском команды или вы можете получить ошибку «файл или каталог не существует».

 Смежные вопросы

  • Нет связанных вопросов^_^