안드로이드를 접하고 공부하고 있는 초보입니다ㅜㅜ
process runtime.exec(명령어)를 이용하여 터미널처럼 Text로 뿌려주는 app제작 중입니다.
EditText로 입력받은 문자를 TextView로 뿌려주고 있는데
"ls" 등 몇몇 명령어는 잘 출력되지만 "cd" 등 다른 명령어들이 먹히지 않고 있습니다.
잘못된 명령어 입력 시 리눅스 터미널 창에서 오류메시지가 뜨지 않고
공백 창으로 되는데....
잘못된 부분이나 해결할 수 있는 문제점 좀 알려주시면 감사하겠습니다.
목적은 busybox hdparm를 실행하기 위해서 입니다 ㅜㅜ
package kr.co.example.gen4_cmd;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
EditText editText1;
Button button1;
String cmd, string_error, string_ok;
TextView textview1;
TextView textview2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText1 = (EditText) findViewById(R.id.editText1); //입력 class 연결
button1 = (Button) findViewById(R.id.button1); //버튼 class 연결
textview1 = (TextView) findViewById(R.id.textview1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Runtime runtime = Runtime.getRuntime();
Process process;
try {
cmd = editText1.getText().toString(); //입력된 텍스트 String 저장
process = runtime.exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(" % " + line + "\n");
}
textview1.setText(sb);
br.close();
}
catch (Exception e) {
e.fillInStackTrace();
Log.e("Process Manager", "Unable to execute top command");
textview2 = (TextView) findViewById(R.id.textview2);
textview1.setText(string_error);
string_error = "command error";
textview2.setText(string_error);
}
}
});
}
}