私はアンドロイドのアプリケーションにコマンドを送信し、このphpのファイルを持っている:どのようにして、すべての可能なUNIX(シェル)コマンドをプログラムで実行できますか?
を私がで作業しようとしている:
Runtime.getRuntime().exec(commandLine);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
が、コマンドは、PWDエコーといくつか他の人が働いていません。
は、私は次の例外を取得:
java.io.IOException: Error running exec(). Command: [pwd] Working Directory: null Environment: null
私の知る限りは、任意のシェル環境がないので、これは理解して。
それから私は.SHファイルに私がしたいコマンドを書いて試してみましたが、その後、コマンドをこのように実行します。
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("sh /runCmds/shTest.sh");
InputStream is = proc.getInputStream();
をし、PWD、エコーやコマンドのほとんどの問題を解決しました。
しかし、後で私は実行している命令の状態を保持したいと思った。 たとえば、ディレクトリ(cd data
)を変更してコマンドを実行したい場合は、mkdir Apoel
ここに私の問題に直面します。何をすべきか?
私は別のアイデアを思い付いた:シェルスクリプト(.SH)を作る
、ユーザーがコマンドを実行しようとするたびに、その中に新しいコマンドを追加(そして再び穴スクリプト(.SH)を実行)。しかし、私はそれを行うには非常に良い方法ではないと思います!
簡単な方法はありますか?私のアプリケーションで簡単に端末を開くことはできますか?
ここでは、ターミナルエミュレータで見つかったコードですが、複雑すぎます!
https://github.com/jackpal/Android-Terminal-Emulator
あなたは**/system/bin/sh ** -c 'ここのコマンド'を意味しますが、suは意味しません! 絶対パスを使用する方が良いです。 –
アンドレアス、そうです、私はスーではなくシュウを意味しました。私は訂正をしました。 – Samveen
良い!私は編集しようとしましたが、それは言う:少なくとも6空白以外の文字を編集する必要があります。 :p –