【发布时间】:2014-02-24 15:02:18
【问题描述】:
我刚刚使用内核模块在根目录下将 samba 共享安装到我的 Nexus 7 (CM 11)。
应用程序(ES 文件管理器、Total Commander 等)似乎一切正常,我可以看到文件并且可以读取它们,甚至来自 shell 的“cat”命令也可以。 但我无法从我的应用程序中读取它们!既不是本机调用(open 将 errno 设置为 ENOENT)也不是 FileInputStream。
我尝试了很多名字:
/storage/emulated/0/mounted_folder/file.txt
/storage/emulated/legacy/mounted_folder/file.txt
/sdcard/mounted_folder/file.txt
/mnt/shell/emulated/0/mounted_folder/file.txt
拥有root权限,拥有读写权限和许多其他变体,仍然没有运气:(
我错过了什么?
【问题讨论】:
-
只是调用 fopen (“adb shell cat”命令在相同路径下工作正常)
-
您需要通过使用的安装命令确定您安装共享的路径,方法是从 shell 运行不带参数的
mount命令,或者将/proc/mounts作为文本读取文件并检查它。另请注意,Android 现在支持按进程挂载,因此您可以(尽管可能不太可能)以仅为 ADB 而非应用程序挂载的方式挂载共享。此外,您对“使用 root 权限”尝试此操作的评论可能会被误认为即使在 root 设备上,应用程序本身也不会以 root 身份运行。 -
我已经找到了真正的路径,它也是我尝试打开的“/mnt/shell/emulated/0/mounted_folder/file.txt”。为 adb 和应用程序安装了文件夹,我从 adb shell 和 android 文件管理器中打开了它。应用程序可以在代码中调用“su”来请求 root 权限。