2

私が取り組んでいる Android アプリケーションには、ルートが必要です。root を使用して内部メモリの一部にアクセスし、次にlsディレクトリを呼び出します。次に、データがある場合はうまく機能しますが、ディレクトリが空の場合、アプリケーションはハングします。これを回避する良い方法はありますか?

これがコードです

    final Runtime runtime = Runtime.getRuntime();
            try {
                // Perform su to get root privileges
                Process p = runtime.exec("su");
                DataOutputStream output = new DataOutputStream(p.getOutputStream());
                output.writeBytes("ls " + directoryPath + "\n");
                output.flush();
                InputStream stdout = p.getInputStream();
                byte[] buffer = new byte[1024];
                int read;
                String out = new String();
                while(true){
                    //If ls found no files it hangs on this line
                    read = stdout.read(buffer);
                    out += new String(buffer, 0, read);
                    if(read < 1024){
                        break;
                    }
                }
            }
4

1 に答える 1

2

以下は私にとってはうまくいきます:私のプロセスヘルパーを見て、例えば

Pair<Integer, String> ret = ProcessHelper.runCmd(true, "su", "-c", "ls -l");
于 2013-03-27T21:34:33.793 に答える