我在这里搜索和搜索,没有一个主题能接近回答这个问题。
从根 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 接口,但结果都是空的。一定有办法做到这一点!!