如何在Android应用程序中运行终端命令?

问题描述:

如何通过android应用程序向终端发送命令并获取输出?例如,发送“ls /”并获取输出以在GUI中打印它?如何在Android应用程序中运行终端命令?

你必须使用反射来调用android.os.Exec.createSubprocess():

public String ls() { 
    Class<?> execClass = Class.forName("android.os.Exec"); 
    Method createSubprocess = execClass.getMethod("createSubprocess", String.class, String.class, String.class, int[].class); 
    int[] pid = new int[1]; 
    FileDescriptor fd = (FileDescriptor)createSubprocess.invoke(null, "/system/bin/ls", "/", null, pid); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fd))); 
    String output = ""; 
    try { 
     String line; 
     while ((line = reader.readLine()) != null) { 
      output += line + "\n"; 
     } 
    } 
    catch (IOException e) {} 
    return output; 
} 
+0

什么是execClass? – 2010-05-16 10:27:08

+0

糟糕,那是反映出来的阶级。 – 2010-05-17 10:50:51

+2

我得到“java.lang.ClassNotFoundException:android.os.Exec” – ademar111190 2013-09-18 20:40:58

不同的解决方案可以在这里找到:http://code.google.com/p/market-enabler/wiki/ShellCommands 我没有测试他们没有。

试试这个答案有办法运行在Android shell命令编程 https://stackoverflow.com/a/3350332/2425851