21

特定のフォルダーからファイルを実行したいだけです。私の場合、/data/data/my-package/files/. だから私は試しました:

 Process process2=Runtime.getRuntime().exec("cd /data/data/my-package/files/");
 process2.waitFor();
 process2=Runtime.getRuntime().exec("./myfile");

うまくいきません。誰かがそれを行う正しい方法を教えてください。ありがとう

4

3 に答える 3

43

を使用して、特定の作業ディレクトリで実行可能ファイルを呼び出すことができるはずです。Runtime.exec(String command, String[] envp, File dir)

次のように:

Process process2=Runtime.getRuntime().exec("/data/data/my-package/files/myfile",
        null, new File("/data/data/my-package/files"));

多分へのフルパスなしでmyfile

Process process2=Runtime.getRuntime().exec("myfile",
        null, new File("/data/data/my-package/files"));

Context#getFilesDir()パスをハードコーディングする代わりに、パスも機能するはずであり、パスを自分で指定するよりも安全でクリーンです。これ/data/data/.. は、すべてのデバイスで常に正しいパスであることが保証されていないためです。

Process process2=Runtime.getRuntime().exec("myfile",
        null, getFilesDir()));

の問題cd somewhereは、ディレクトリが別のプロセス用に変更されているためexec、新しいプロセスでの2回目の呼び出しで変更が認識されないことです。

于 2012-05-21T18:52:10.480 に答える