授予我的应用程序超级用户权限后
Runtime.getRuntime().exec("su");
我仍然无法访问系统文件,例如 /bin 中的文件
File file = new File("/bin");
File[] fileList = file.listFiles(); // fileList is a null array
有什么解决办法吗?
应用程序本身(您用 Java/Kotlin 开发的代码)永远不会获得 root 权限。只有在应用程序打开的 root shell 中,您才能执行标准 Linux 命令行工具来执行 root 操作。
因此执行
Runtime.getRuntime().exec("su");
对您的应用程序绝对没有影响。它只是启动一个 root shell,并且由于没有要执行的命令而直接关闭它。
在你的情况下,我会简单地假设
/bin
文件夹不存在。您很可能正在搜索 /system/bin
或 /system/sbin
。列出这些文件夹之一不需要 root 权限。另外列出/
不需要root权限。您可以使用 Java 代码或 adb shell ls -la /
列出文件系统中的文件以查看实际存在的目录。