Java 如何在android中执行根进程(su)并从中写入/读取命令

Java 如何在android中执行根进程(su)并从中写入/读取命令,java,android,process,stream,Java,Android,Process,Stream,我正在尝试使用root权限执行命令,我尝试以下操作(仅限于示例): 但是我需要在一个循环中调用它一百次,所以这种方式非常慢,并且总是显示一个对话框,其中包含授予根权限的消息,所以我如何创建一个单su进程,以便使用输入和输出流连续地进行写和读?我知道两者都可以使用,但我不知道如何写入和读取命令的结果。谢谢你的帮助。你希望“whoami”在第一次之后返回不同的内容吗?不,whoami只是一个例子,我真的想通过命令行执行一个.sh文件,这个文件可以执行我想要的任何操作,它返回一个字符串,问题的核心是执

我正在尝试使用root权限执行命令,我尝试以下操作(仅限于示例):


但是我需要在一个循环中调用它一百次,所以这种方式非常慢,并且总是显示一个对话框,其中包含授予根权限的消息,所以我如何创建一个单
su
进程,以便使用输入和输出流连续地进行写和读?我知道两者都可以使用,但我不知道如何写入和读取命令的结果。谢谢你的帮助。

你希望“whoami”在第一次之后返回不同的内容吗?不,whoami只是一个例子,我真的想通过命令行执行一个.sh文件,这个文件可以执行我想要的任何操作,它返回一个字符串,问题的核心是执行任意命令任意次数,但是使用root权限,而不是每个人都调用su,我的英语不好,所以我想如果我解释得好的话,谢谢。我建议编写另一个shell脚本,在循环中执行您想要的,并调用它,而不是原始命令。谢谢,但我使用进度条来跟踪进度,这不是通过流在流程中写入和读取的方式吗?是的,您的示例代码已经通过BufferedReader“reader”完成了这项工作
Process process = Runtime.getRuntime().exec(new String[]{"su","-c","whoami"});

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;

while ((line = reader.readLine()) != null) {
    result += line;
    Log.d(TAG,"RESULT:"+result);
}