1

ご覧のとおり、次のコードを使用して単純なルート エクスプローラー アプリを作成しています。

 @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");

4

1 に答える 1

1

答え:

Process p = Runtime.getRuntime().exec(new String[] {"su", "-c", "ls /data/data"});
于 2013-07-16T08:29:43.850 に答える