3

我在这里搜索和搜索,没有一个主题能接近回答这个问题。

从根 APK 中安装和卸载 USB 记忆棒。我已经通过 adb 从命令行成功地做到了,如下所示:

提示>> mount -t vfat -o rw /dev/block/sda1 /sdcard/usb

执行此命令后,我可以“cd /sdcard/usb”并可以看到 U 盘的内容。

如果我使用 Process 类在代码中尝试此操作,我无法从 adb 的命令行、设备上的文件资源管理器等中看到任何内容:

proc = Runtime.getRuntime().exec(new String[]{"/system/xbin/su", "-c", "mount -t vfat -o rw /dev/block/sdb1 /sdcard/usb"});

proc.waitFor();

这是一个沙盒问题。它快把我逼疯了。这就是我认为正在发生的事情,我不知道如何解决它:当 Process 类调用 su 时,它会在一个全新的用户空间中这样做——它是自己的沙箱。挂载成功(我可以从一些调试中看到),然后进程终止并返回到位于不同沙箱中的应用程序。正因为如此,我不仅看不到挂载,而且随着 su 进程的消失,它也被卸载了。

我需要能够从我的应用程序中安装 USB 记忆棒,读取/写入文件,然后在删除之前卸载它(否则有数据损坏的风险)。

我一直在寻找 Linux mount(2) 和 umount(2) 命令的 android 或 java 接口,但结果都是空的。一定有办法做到这一点!!

4

1 回答 1

-1

你必须仔细阅读。安装和卸载应该使用 http://developer.android.com/guide/topics/connectivity/usb/host.html

于 2014-02-06T15:11:54.207 回答