私はAndroid用のターミナルエミュレーターを構築しようとしています。これはかなり新しいので、私のアイデアは、各コマンドを実行し、出力をファイルに保存することでした。ファイルの内容は、実行するたびに表示されます。 擬似コード:
public Boolean execCommands(String command) {
try {
rt = Runtime.getRuntime();
process = rt.exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("echo $ \""+command+ "\" >> /sdcard/Android/data/terminalemulatorlog.txt\n\n\n");
/**** Note : String command = (EditText)findViewById(R.id.command).getText().toString(); ****/
os.flush();
os.writeBytes("exit\n");
os.flush();
process.waitFor();
}
// Error Handling
displayOutput(); //Loads and displays the Text File (/sdcard/Android/data/terminalemulatorlog.txt)
return true;
}
このコードは、いくつかの特別なコマンド(たとえば、「clear」)を除いて機能します。しかし、私がもっと心配しているのは、次の問題です。
- コマンドを実行するたびに、SuperUser権限(コードの2行目)を探すことになります。そして、私はこれを廃止したいと思います。
ユーザーが次のように、あるコマンドの後に別のコマンドを入力した場合。cd /sdcard touch File.txt
File.txtは、「/ sdcard」ではなく、「/」に作成されます。今のところ、これを避けるために、現在の作業ディレクトリが何であるかを把握するために、すべての「cd」コマンドを追跡しています。そして、私はこれを回避するより良い方法があることを望んでいます。
誰かがここで私を助けてくれたらありがたいです。