我正在尝试创建一个根文件浏览器,但是,我在访问根目录时遇到了一些问题。当我尝试访问/ data时,该文件夹为空。
当我这样做时:
File file = new File("/data/");
然后请求该目录中的项目,它是空的。 (没有root访问权限)。我知道如何使用Process
执行简单的root命令,但是在没有root的情况下它将不起作用。
所以我需要能在所有手机上运行的东西。
我考虑过将File
用于无根设备,将ls
命令用于root设备,但不知道这是否是最佳解决方案。我也可以使用带有或不带root的ls
,但我想使用File
。
有没有办法制作根文件浏览器,同时还支持非根电话?
由于
答案 0 :(得分:3)
您的建议是正确的。您无法在root设备上真正使用File
来访问没有root的文件夹,因此在这种情况下您肯定必须依赖ls
。基本上你可以选择在任何地方使用ls
和使用隐藏细节的抽象。在后一种情况下,您将拥有一个类似File
的界面,该界面将使用下方的File
或ls
。
我记得在设计自己的文件浏览器时遇到同样的问题,我选择了第二个解决方案。使用File
的速度更快,因此该解决方案具有一些性能优势。我还必须编写自己的ls
,因为我不想依赖系统提供的那个,因为它提供的输出没有任何保证。
我还建议阅读API,它有很多关于如何正确调用命令的有用细节。