Android 용 터미널 에뮬레이터를 빌드하려고했습니다. 꽤 새로운데, 내 생각은 각 명령을 실행하고 각 실행 후에 내용이 표시 될 파일에 출력을 저장하는 것이 었습니다. 의사 코드 :이 코드 조각은 몇 가지 특별한 명령을 제외하고 작동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;
}
(예 : '명확한'.). 하지만 다음과 같은 문제가 있습니다에 대한 자세한 걱정 무엇 :
- 명령이 실행될 때마다, 나는 슈퍼 유저 권한 (코드의 두 번째 줄)을 찾는 결국은. 그리고 나는 이것을 버리고 싶습니다. File.txt를
가 아닌 '/ SDCARD'에 '/'에서 생성되어 같은cd /sdcard touch File.txt
가지 경우에는
사용자가 다른 하나 개 다음에 명령을 입력,
. 지금이 문제를 피하기 위해 현재 작업 디렉토리가 무엇인지 알아 내기 위해 모든 'cd'명령을 추적합니다. 그리고 나는 이것에 대해 더 좋은 방법이 있기를 바라고 있습니다.
누군가 나를 도와 줄 수 있다면 감사 할 것입니다.
이 있나요? 또한 "su"를 제거하십시오. 사용자가 루트 priv를 필요로하는 경우, 모든 것을 루트로 실행하는 대신 터미널에서와 마찬가지로 "sudo mycommand"를 실행해야합니다. – Jack
그 이유는 확실하지 않지만 응용 프로그램이 'su'없이 강제 종료됩니다. 그리고 '터미널에서와 같이 각 명령을 하나씩 실행하는 방법'에 대한 단서가 없습니다. 대체 코드를 제공해 주시겠습니까? 감사! – Vishnu
사용자가 명령을 입력하고 Enter 키를 누르면 명령을 실행해야합니다. 그것은 당신이 여러 명령 또는 뭔가를 실행하는 것? – Jack