Java 如何从android应用程序执行shell命令?
我想从我的android应用程序中执行android shell命令,以执行uiautomator测试jar 我试过以下几种选择。但他们都不是为我工作的Java 如何从android应用程序执行shell命令?,java,android,Java,Android,我想从我的android应用程序中执行android shell命令,以执行uiautomator测试jar 我试过以下几种选择。但他们都不是为我工作的 public void execute(String shellcommand) { Runtime rt = Runtime.getRuntime(); Process p = r.exec(new String[]{"/system/bin/sh", "-c", shellcommand}); } 也试
public void execute(String shellcommand) {
Runtime rt = Runtime.getRuntime();
Process p = r.exec(new String[]{"/system/bin/sh", "-c", shellcommand});
}
也试过
public void execute(String shellcommand) {
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes(shellcommand + "\n");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();
}
请告诉我犯了什么错误?试试这个,我还添加了一个输出读取过程。但您需要剪切shell命令:
ProcessBuilder pb = new ProcessBuilder("adb", "shell", "uiautomator", "runtest", "/data/local/tmp/MyJar.jar", "-c", "com.my.test.Class#testmethod", "-e someparameter someparameterName");
Process pc;
try {
pc = pb.start();
InputStream stdin = pc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
InputStreamReader esr = new InputStreamReader(pc.getErrorStream());
BufferedReader errorReader = new BufferedReader(esr);
pc.waitFor();
} catch (IOException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Assert.fail(e.getMessage());
}
安卓5.0解决了你的问题。这是一个新的API,您可以使用它执行shell命令。请检查此处: 享受