0

我只是想写一个应用程序来访问超级用户访问并了解它的工作原理。

所以我正在使用以下方法将一些文本写入文件:

public void update(View v){
    Process p;
    try{
        // Preform su to get root privledges
        p = Runtime.getRuntime().exec("su");

        // Attempt to write a file to a root-only
        DataOutputStream os = new DataOutputStream(p.getOutputStream());
        os.writeBytes("echo \"Do I have root?\" >/system/etc/temporary.txt\n");

        // Close the terminal
        os.writeBytes("exit\n");
        os.flush();

        try{
            p.waitFor();
            if(p.exitValue() != 225){
                showToast("ROOTED !");
            } else {
                showToast("not root");
            }
        } catch(InterruptedException e){
            showToast("not root");
        }
    } catch(IOException e){
        showToast("not root");
    }
}

ROOTED !因此,当我调用此方法时,会显示祝酒词。意味着该文件temporary.txt必须在/system/etc我手机的文件夹中创建。但是当我使用 Root Explorer 应用程序浏览到该文件夹​​时,我什么也看不到。这件事让我感到困惑,因为ROOTED !显示了 toast 但我看不到文件。

是的,我的手机已植根。

4

1 回答 1

2

System已挂载ro,如果你想尝试在里面写一些东西,system/etc你应该先重新挂载它rw

编辑:

来自安装文档

在 Unix 系统中可访问的所有文件都排列在一棵大树中,即文件层次结构,以 / 为根。这些文件可以分布在多个设备上。mount 命令用于将在某个设备上找到的文件系统附加到大文件树。

那是我设备上的输出:

shell@android:/ $ mount                                                        
rootfs / rootfs ro,relatime 0 0

如您所见/,以只读方式安装

于 2013-06-15T17:19:52.973 回答