Android 上 java.io.file 的根访问权限

Root access with java.io.file on Android

我正在尝试创建一个根文件浏览器,但是,我在访问根目录时遇到了一些问题。当我尝试访问 /data 时,该文件夹是空的。

当我这样做时:

File file = new File("/data/");

然后请求该目录中的项目,它是空的。 (没有根访问权限)。我知道如何使用 Process 执行简单的 root 命令,但如果没有 root,它就无法在手机上运行。 所以我需要适用于所有手机的东西。

我考虑过对无根设备使用 File,对有根设备使用命令 ls,但不知道这是否是最佳解决方案。我也可以在有或没有 root 的情况下使用 ls,但我想使用 File

有没有办法制作一个 root 文件浏览器,同时保持对非 root 手机的支持?

谢谢

您的建议是正确的。您不能真正在有根设备上使用 File 来访问没有根不可用的文件夹,因此在这种情况下您肯定必须依赖 ls。基本上,您可以在到处使用 ls 和使用隐藏细节的抽象之间进行选择。在后一种情况下,您将拥有一个类似于 File 的界面,该界面将在下面使用 Filels

我记得我在设计自己的文件浏览器时遇到过同样的问题,我选择了第二种解决方案。使用 File 速度更快,因此该解决方案具有一些性能优势。我还必须自己编写 ls,因为我不想依赖系统提供的那个,因为它提供的输出没有保证。

我还建议阅读 How-To SU,它有很多关于如何正确调用命令的有用细节。