我有一个Android应用程序,我已经安装为系统应用程序(在/ system / app中),它意味着执行一个shell脚本,传递用户在应用程序中设置的一些变量。 我正在使用的代码是:
public void onClick(View v) {
try{
Log.i("MyActivity", "trying");
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes("busybox chroot /uoa /bin/createuser.sh " + username.getText().toString() + " " + password.getText().toString());
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();
}catch(IOException e){
Log.e("MyActivity", e.toString());
}catch(InterruptedException e){
Log.e("MyActivity", e.toString());
}
}
但是我收到错误:
E / MyActivity(1872):java.io.IOException:写入失败:EPIPE(破碎 管)
脚本没有被执行。我知道脚本有效,因为我可以通过adb shell运行命令。
busybox chroot / uoa /bin/createuser.sh testuser test
另外,如何从脚本中获取输出以进行记录?