我目前正在尝试通过工作应用程序获得对文件系统的完全访问权限。 我在 API 级别为 26、27、31、32 的 root AVD 上进行了测试 虽然通过终端手动执行命令没有问题(也可以在 apis 26/27 上以编程方式执行),但当我从应用程序调用相同命令时,似乎无法访问 apis 31 / 32 上的文件系统。 即使 'whoami' 明显返回 'root'
所以:
//Fails
val command = "su -c 'touch /data/data/something.../
//Succeeds
val cmd = "su -c 'touch /storage/something.../
//Also succeeds
val cmd = "su -c 'ps -ef'
我猜这是高 API 上的文件系统的问题。有什么解决办法吗?
可能不是权限问题。只是我的应用程序无法看到整个文件系统。上面的命令“su -c 'touch /data/data/something.../ 返回'没有这样的文件或目录'。当你从终端运行命令时,情况并非如此
如果有人想知道,su 进程将使用 --mount-master 选项查看整个文件系统。 正如 su --help 所说,该选项是“强制在全局挂载命名空间中运行”