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