2010-09-27 9 views

Odpowiedz

8

Ten fragment wymaga uprawnień roota, ale będzie wykonywał dany ciąg jako polecenia powłoki

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()); 
    } 
} 
+0

dziękuję bardzo ... Jakie byłyby zobowiązane zmodyfikować to na uruchamianie wielu poleceń powłoki? –

+0

W najgorszym przypadku można wywołać tę funkcję dla każdego polecenia, ale powinno być możliwe oddzielenie każdego polecenia znakiem nowej linii \ n –

Powiązane problemy