2

Androidアプリでruntime.execを動作させることができないようです。私は多くのシェルユーティリティでそれを試しました、これが私が使っているコードです:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    filesPrinter = (Button) findViewById(R.id.print_files);
    filesPrinter.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            try {
                Process proc = Runtime.getRuntime().exec("ls");
                out = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
                in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                String line;
                while((line = in.readLine()) != null) {
                    System.out.println(line);
                }
                System.out.println("Done reading");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
 }

エラーは発生しませんが、logcatにも何も表示されません。

4

3 に答える 3

2

問題は、日食ログキャットのバグであることになりました。adb logcatを使用すると、出力されるはずのすべてのものを確認できました。何らかの理由で、Eclipseのlogcatは、接続されているが、エミュレーターからアプリケーションレベルの出力を受信して​​いないことを示しました。

于 2012-06-22T21:46:04.903 に答える
0

たぶん、現在の作業ディレクトリ(lsパラメータなしでスキャンするもの)にはファイルが含まれていません。コマンド引数としてパスを指定してみてください。

于 2012-06-22T21:22:16.037 に答える
0

proc.waitFor()..が欠落していると思います。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    filesPrinter = (Button) findViewById(R.id.print_files);
    filesPrinter.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            try {
                Process proc = Runtime.getRuntime().exec("ls");
                out = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
                in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                String line;
                while((line = in.readLine()) != null) {
                    System.out.println(line);
                }
                System.out.println("Done reading");
                //
                proc.waitFor(); // THIS!!!
                //
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
 }
于 2012-06-22T21:42:34.117 に答える