gpt4 book ai didi

java - Android 在应用程序中运行 bash 命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:48:32 25 4
gpt4 key购买 nike

您好,我正在开发一个需要运行一些 bash 代码的应用程序,有什么方法可以将脚本硬编码到我的应用程序中,然后运行它?例如(这是一个非常简化的例子)

#!/system/bin/sh
#

if [ ! -f /sdcard/hello.txt ]
then
echo 'Hello World' >> /sdcard/hello.txt
else
echo 'Goodbye World' >> /sdcard/goodbye.txt
fi

我有以下运行一行 bash 命令的方法,但需要在多行上运行类似的方法。同样,上面的代码是一个非常简化的示例,我实际上在做的事情必须通过脚本运行,而不能通过 java 完成。我也想对其进行硬编码我知道可以将脚本存储在手机上并使用以下命令运行它但不希望脚本就在那里而是在应用程序中进行硬编码。

public Boolean execCommand(String command) 
{
try {
Runtime rt = Runtime.getRuntime();
Process process = rt.exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.flush();
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (IOException e) {
return false;
} catch (InterruptedException e) {
return false;
}
return true;
}

感谢您对我的问题的任何帮助

最佳答案

如果我对你的理解正确,你所要做的就是将单行示例方法更改为接受和发送多行的方法,如下所示:

    public Boolean execCommands(String... command) {
try {
Runtime rt = Runtime.getRuntime();
Process process = rt.exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());

for(int i = 0; i < command.length; i++) {
os.writeBytes(command[i] + "\n");
os.flush();
}
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (IOException e) {
return false;
} catch (InterruptedException e) {
return false;
}
return true;
}

这样,您就可以像这样调用多行 bash 命令:

    String[] commands = {
"echo 'test' >> /sdcard/test1.txt",
"echo 'test2' >>/sdcard/test1.txt"
};

execCommands(commands);

String commandText = "echo 'foo' >> /sdcard/foo.txt\necho 'bar' >> /sdcard/foo.txt";

execCommands(commandText.split("\n"));

关于java - Android 在应用程序中运行 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com