根文件列表:Runtime.getRuntime()。exec(“ls / data”);?有什么问题

时间:2013-07-16 07:56:14

标签: android root ls

如您所见,我正在使用以下代码构建一个简单的Root explorer应用程序:

 @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(!(requestRoot())) 
        Toast.makeText(this.getActivity(), "Could Not Get Root!", Toast.LENGTH_SHORT).show();
    else
        Toast.makeText(this.getActivity(), "Root Found!", Toast.LENGTH_SHORT).show();

    getDir("/");      //=>OK
    getDir("/data");  //=>NOT OK
    getDir("/data/"); //=>NOT OK
}

private void getDir(String dirPath)
{
    getActivity().getActionBar().setTitle("Location: " + dirPath);

    item = new ArrayList<String>();

    try {
        Process p = Runtime.getRuntime().exec("ls "+dirPath);
        BufferedReader in = new BufferedReader(
                new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = in.readLine()) != null) {
            item.add(line);
            Log.e(dirPath, dirPath +" => "+ line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

问题是getDir("/");为我提供了所有预期的结果(包含数据的文件列表),但getDir("/data");没有给出任何结果或错误......

非常感谢有关问题的任何线索。

编辑: 我也试过

  

进程p = Runtime.getRuntime()。exec(“sudo ls / data”);

1 个答案:

答案 0 :(得分:1)

答案:

Process p = Runtime.getRuntime().exec(new String[] {"su", "-c", "ls /data/data"});