2013-06-09 12 views
5

में एक सांबा शेयर माउंट करें मैं प्रोग्राम रूप से समबा शेयरों को माउंट करने का एक तरीका ढूंढ रहा हूं।एंड्रॉइड - कोड

मैं this question के बारे में पता है, जो अगर यह काम करता है, मेरी अनुप्रयोग के भीतर एक सांबा शेयर ब्राउज़ कर की अनुमति होगी, लेकिन मैं शेयरों अन्य एप्लिकेशन एक बार घुड़सवार के लिए उपलब्ध रहना चाहता हूँ।

मैं ES फ़ाइल एक्सप्लोरर ऐसा कर सकते हैं, तो यह कोड में लागू करने के लिए संभव होना चाहिए पता है, लेकिन मैं यह पता लगाने की कोशिश कर रहा हूँ कि यह कैसे हुआ। एकमात्र तरीका जिसे मैं सोच सकता हूं, Runtime.getRuntime()। Exec (...) के साथ एक प्रक्रिया खोल रहा है लेकिन फिर आदेशों को भेजने का मुद्दा है। मैं एक टर्मिनल एमुलेटर ऐप में खेल रहा हूं और मानक माउंट कमांड काम नहीं कर रहा है। मैं कोशिश की है निम्नलिखित:

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

और

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

लेकिन दोनों ही मामलों में मैं नहीं बल्कि uninformative त्रुटि संदेश "माउंट: ऐसी कोई डिवाइस" हो रही है

मैं कहां से हो सकता है गलत हो रहा?

+0

मैं JCIFs का प्रयोग करेंगे (मैं इसे का उपयोग किया है से पहले, यह काम करता है) और एक 'Service' चलाते हैं। –

+1

वास्तविक समस्या यह है कि 'माउंट' का उपयोग कर फाइल सिस्टम को माउंट करने के लिए आपको उपयुक्त मॉड्यूल के माध्यम से अपने कर्नेल में सीआईएफएस समर्थन की आवश्यकता होगी। –

+0

केन, एक सेवा चलाना एक विकल्प नहीं है। मुझे उन फ़ाइलों को पारदर्शी रूप से उपलब्ध कराने की आवश्यकता है जो मेरे बारे में नहीं जानते हैं। अनिवार्य रूप से, एक बार माउंट पूरा हो जाने पर, किसी भी एंड्रॉइड ऐप में कोई फ़ाइल एक्सप्लोरर दूरस्थ फ़ाइलों तक पहुंचने में सक्षम होना चाहिए – 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)> 

उदाहरण :

# modprobe cifs 

यदि यह काम नहीं करता है तो आपको अपने कर्नेल को बदलना या पुन: संकलित करना होगा (उपयुक्त मॉड्यूल सहित)।

+0

मेरे पास है प्रश्न में समझाया गया है और टिप्पणियों में दोहराया गया है कि CifsManager बिना किसी अतिरिक्त कॉन्फ़िगरेशन के काम करता है, जिन उपकरणों को इस कार्यक्षमता की आवश्यकता है, फिर भी कमांड लाइन के माध्यम से बढ़ना काम नहीं करता है। – LairdPleng

+0

क्या विकल्प "इन्फॉर्म के माध्यम से लोड करें" CifsManager में चेक किया गया है सेटिंग्स? इस मामले में माउंट कमांड चलाने से पहले 'busybox insmod cifs' चलाने का प्रयास करें। – EricLavault

1

मैं एक ही समस्या में भाग गया। सीआईएफएस प्रबंधक काम कर रहा था, लेकिन टर्मिनल से आदेश नहीं था। मेरे लिए वैसे भी, यह पता चला कि मुझे बस थोड़ा कमांड संशोधित करना पड़ा और यह काम किया। निम्न आदेश का प्रयास करें:

माउंट -ओ उपयोगकर्ता नाम = अतिथि, पासवर्ड = आयकर CIFS // [IPADDRESS]/[शेयर] अतिथि/sdcard/CIFS/NAS

सुनिश्चित करें कि स्थानीय फ़ोल्डर/sdcard/cifs/nas (या आपका वांछित समकक्ष) कमांड चलाने से पहले मौजूद है या आपको "फ़ाइल या निर्देशिका मौजूद नहीं है" त्रुटि मिल सकती है।

संबंधित मुद्दे