如何在Android应用程序中包含shell脚本

时间:2012-02-10 05:45:04

标签: android shell

我想从Android应用程序执行shell脚本。我可以通过以下方式传递ls pwd date等命令:

  

进程p = Runtime.getRuntime.exec(“command”);

但现在我想执行我的应用程序所需的shell脚本。 shell脚本在linux终端上运行正常。

你能帮助我帮助我存储shell脚本的位置以及如何从程序中调用它吗?

首先是可能的吗?

2 个答案:

答案 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());
    }
}