我想从Android应用程序执行shell脚本。我可以通过以下方式传递ls pwd date等命令:
进程p = Runtime.getRuntime.exec(“command”);
但现在我想执行我的应用程序所需的shell脚本。 shell脚本在linux终端上运行正常。
你能帮助我帮助我存储shell脚本的位置以及如何从程序中调用它吗?
首先是可能的吗?
答案 0 :(得分:0)
从Android应用程序执行任意shell脚本听起来不错 - 但您应该能够将shell脚本放在SD卡上并通过将完整路径传递到SD卡上的文件来执行它。 / p>
Environment.getExternalStorageDirectory().getAbsolutePath()
将为您提供SD卡的完整路径。检查以确保它首先安装:
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
答案 1 :(得分:0)
如果可能,我强烈建议使用Java和Android SDK来复制脚本的功能。
否则我认为你需要root,那么你需要做类似于this的事情:
void execCommandLine(String command)
{
Runtime runtime = Runtime.getRuntime();
Process proc = null;
OutputStreamWriter osw = null;
try
{
proc = runtime.exec("su");
osw = new OutputStreamWriter(proc.getOutputStream());
osw.write(command);
osw.flush();
osw.close();
}
catch (IOException ex)
{
Log.e("execCommandLine()", "Command resulted in an IO Exception: " + command);
return;
}
finally
{
if (osw != null)
{
try
{
osw.close();
}
catch (IOException e){}
}
}
try
{
proc.waitFor();
}
catch (InterruptedException e){}
if (proc.exitValue() != 0)
{
Log.e("execCommandLine()", "Command returned error: " + command + "\n Exit code: " + proc.exitValue());
}
}