簡體   English   中英

如何從Android應用程序執行Shell命令?

[英]How to execute shell command from android app?

我想從我的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) {
    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());
}

Android 5.0解決了您的問題。 這是可以用來執行Shell命令的新API。請在此處檢查: executeShellCommand(字符串命令)

請享用!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM